Я думаю, вопрос говорит все, но что произойдет, если кто-то закроет консольное приложение С++? Как и в, щелкает "x" в верхнем углу. Он мгновенно закрывается? Вызывает ли это какое-то исключение? Это поведение undefined?
Что происходит, когда вы закрываете консольное приложение С++
Ответ 1
Закрытие консольного приложения С++ с "x" в верхнем углу вызывает CTRL_CLOSE_EVENT
, который вы могли бы поймать и обработать, если вы установите обработчик управления с помощью SetConsoleCtrlHandler. Там вы можете переопределить функциональность закрытия и выполнить все, что хотите, а затем по-прежнему выполнять поведение по умолчанию.
Ответ 2
Я предполагаю, что консольный процесс просто бесцеремонно убит ОС. Если вы хотите отловить это событие и сделать что-то, похоже, функция SetConsoleCtrlHandler - это способ сделать это.
См. также:
Ответ 3
В Linux и других Unix-системах консоль запускается как отдельный процесс. Когда вы закрываете оболочку, она посылает сигнал SIGHUP текущему активному процессу или процессам, которые не выполняются в фоновом режиме. Если программист не справляется с этим, процесс просто завершается. Тот же сигнал отправляется, если вы закрываете сеанс SSH с помощью терминала и активного процесса.
Ответ 4
SIGBREAK
создается в Windows.