Ответ 1
В первом созданном потоке появляется сообщение WM_QUIT
.
Когда вы не справитесь с этим, ваш процесс принудительно завершает работу.
Так просто реализуйте очередь сообщений в первом потоке, который ищет сообщение WM_QUIT
В ОС POSIX существует API-интерфейс сигнала, который позволяет отправлять сигнал для обработки, чтобы отключить его с убить, и вы можете поймать его с помощью sigaction и сделать то, что вам нужно;
Однако Win32 не является системой POSIX, поэтому:
Я не говорю о графическом интерфейсе, я говорю о TCP/IP-сервере, который должен быть хорошо закрыт. что не работает как служба Windows.
В первом созданном потоке появляется сообщение WM_QUIT
.
Когда вы не справитесь с этим, ваш процесс принудительно завершает работу.
Так просто реализуйте очередь сообщений в первом потоке, который ищет сообщение WM_QUIT
MSDNs Руководство по миграции кода Unix содержит главу Преобразование кода Win32 и обработка сигналов.
Хотя Microsoft решила заархивировать этот блестящий гид, это очень полезно.
Описаны три метода:
Родные сигналы
Объекты событий
Сообщения
Может быть Windows Power Management от MSDN было бы полезно. Но это касается системных событий, а не процессов.
Для процесса вы сможете обнаружить завершение с помощью WM_CLOSE
. Вам нужно будет обрабатывать сообщения Windows. Если это консольное приложение, вам нужно будет установить обработчик; посмотрите SetConsoleCtrlHandler на MSDN