Как CLion завершает запущенный процесс?

Я работаю над TCP-сервером, который разрабатываю на CLion под Windows 10.

Я хотел бы, чтобы моя программа могла завершиться правильно, когда я нажимаю "остановить" мою программу. Я думал, что CLion отправляет сигнал, но после попытки перехватить их все оказалось, что это не так.

Итак, мой вопрос: как CLion перестает запускать программу? Можно ли обнаружить это в программе?

Заранее спасибо.


person souki    schedule 03.07.2018    source источник
comment
Вы отлаживаете программу? Отладчики обладают низкоуровневыми божественными способностями. Если они хотят, чтобы программа, которую они запускают, умерла, она умрет.   -  person user4581301    schedule 03.07.2018
comment
Нет, я даже не отлаживаю. Я не знал об этих низкоуровневых божественных силах, которыми обладают отладчики, ахах!   -  person souki    schedule 03.07.2018
comment
@user4581301 user4581301 помимо отправки сигнала (например, SIGTERM (который вы можете поймать) или SIGKILL (который вы не можете поймать)), не могли бы вы подробнее рассказать об этих божественных силах?   -  person Jesper Juhl    schedule 03.07.2018


Ответы (1)


Я нашел свой ответ здесь.

По этой ссылке на самом деле используются сигналы:

Нажмите эту кнопку, чтобы внешне завершить текущий процесс с помощью стандартного сценария завершения работы. Однократное нажатие кнопки вызывает мягкое уничтожение, позволяя приложению перехватывать событие SIGINT и выполнять корректное завершение (в Windows эмулируется событие Ctrl+C). После того, как кнопка нажата один раз, она заменяется значком запуска окна средства запуска, указывающим, что последующий щелчок приведет к принудительному завершению приложения, например. в Unix отправляется SIGKILL.

person souki    schedule 03.07.2018