Что происходит, когда вы закрываете консольное приложение c ++ - PullRequest
24 голосов
/ 30 марта 2009

Полагаю, вопрос говорит сам за себя, но что произойдет, если кто-то закроет консольное приложение c ++? Как и в, нажимает «х» в верхнем углу. Это мгновенно закрывается? Это бросает какое-то исключение? Это неопределенное поведение?

Ответы [ 4 ]

20 голосов
/ 30 марта 2009

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

9 голосов
/ 30 марта 2009

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

9 голосов
/ 30 марта 2009

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

Смотри также:

8 голосов
/ 15 декабря 2014

SIGBREAK повышается в Windows.

...