Подтвердить что ты не робот

Что происходит, когда вы закрываете консольное приложение С++

Я думаю, вопрос говорит все, но что произойдет, если кто-то закроет консольное приложение С++? Как и в, щелкает "x" в верхнем углу. Он мгновенно закрывается? Вызывает ли это какое-то исключение? Это поведение undefined?

4b9b3361

Ответ 1

Закрытие консольного приложения С++ с "x" в верхнем углу вызывает CTRL_CLOSE_EVENT, который вы могли бы поймать и обработать, если вы установите обработчик управления с помощью SetConsoleCtrlHandler. Там вы можете переопределить функциональность закрытия и выполнить все, что хотите, а затем по-прежнему выполнять поведение по умолчанию.

Ответ 2

Я предполагаю, что консольный процесс просто бесцеремонно убит ОС. Если вы хотите отловить это событие и сделать что-то, похоже, функция SetConsoleCtrlHandler - это способ сделать это.

См. также:

Ответ 3

В Linux и других Unix-системах консоль запускается как отдельный процесс. Когда вы закрываете оболочку, она посылает сигнал SIGHUP текущему активному процессу или процессам, которые не выполняются в фоновом режиме. Если программист не справляется с этим, процесс просто завершается. Тот же сигнал отправляется, если вы закрываете сеанс SSH с помощью терминала и активного процесса.

Ответ 4

SIGBREAK создается в Windows.