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

Win32 API аналог отправки/улавливания SIGTERM

В ОС POSIX существует API-интерфейс сигнала, который позволяет отправлять сигнал для обработки, чтобы отключить его с убить, и вы можете поймать его с помощью sigaction и сделать то, что вам нужно;

Однако Win32 не является системой POSIX, поэтому:

  • Как я могу обрабатывать события выключения, которые могут возникнуть, например, из "Конечный процесс" в "Диспетчере задач"?
  • Что такое стандартный API для отправки сигнала выключения в приложение Win32?

Я не говорю о графическом интерфейсе, я говорю о TCP/IP-сервере, который должен быть хорошо закрыт. что не работает как служба Windows.

4b9b3361

Ответ 1

В первом созданном потоке появляется сообщение WM_QUIT.

Когда вы не справитесь с этим, ваш процесс принудительно завершает работу.

Так просто реализуйте очередь сообщений в первом потоке, который ищет сообщение WM_QUIT

Ответ 2

MSDNs Руководство по миграции кода Unix содержит главу Преобразование кода Win32 и обработка сигналов.
Хотя Microsoft решила заархивировать этот блестящий гид, это очень полезно.

Описаны три метода:
Родные сигналы
Объекты событий
Сообщения

Ответ 3

Может быть Windows Power Management от MSDN было бы полезно. Но это касается системных событий, а не процессов.

Для процесса вы сможете обнаружить завершение с помощью WM_CLOSE. Вам нужно будет обрабатывать сообщения Windows. Если это консольное приложение, вам нужно будет установить обработчик; посмотрите SetConsoleCtrlHandler на MSDN