Вопрос

В POSIX OS есть signal API, который позволяет отправлять сигнал процессу для его завершения с помощью kill и вы можете перехватить его с помощью sigaction и делать то, что вам нужно;

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

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

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

Это было полезно?

Решение

Вы получаете WM_QUIT сообщение в вашей первой созданной теме.

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

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

Другие советы

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

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

Может быть управление питанием Windows из MSDN было бы полезно.Но он имеет дело с системными событиями, а не с каждым процессом.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top