Как предотвратить завершение консольного приложения при нажатии "Ctrl+C" в C?

Я обнаружил, что консольное приложение, скомпилированное из GCC в Windows, всегда закрывается при нажатии Ctrl+C,

Есть ли реальный способ предотвратить завершение консольного приложения при нажатии Ctrl+C?

2 ответа

Решение

Когда пользователь нажимает кнопку управления C, сигнал (SIGINT) отправляется вашему процессу. Когда большая часть сигналов отправляется процессу, этот процесс должен либо обработать сигнал, либо операционная система его уничтожит. Итак... все, что вам нужно сделать, это установить обработчик сигнала для SIGINT.

Следующее не проверено:

#include <signal.h>
static void ignore_control_c(int sig)
{
    /* re-arm the signal handler but otherwise ignore the signal */
    signal(sig, ignore_control_c);
}

int main(int argc, char *argv)
{
   signal(SIGINT, ignore_control_c);
   ...

Установите обработчик SIGINT. По умолчанию этот обработчик настроен на прекращение вашего процесса. Для Windows вы можете зарегистрироваться, используя Win32-специфичные SetConsoleCtrlHandler(..),

Посмотрите на документацию, указанную выше, и особенно на пример.

Другие вопросы по тегам