Win32 API analogique d’envoi / de capture de SIGTERM

Sous POSIX OS, il y a une API de signal qui permet d’envoyer un signal au processus pour l’arrêter avec kill et vous pouvez l’attraper avec sigaction et faire ce dont vous avez besoin;

Cependant, Win32 n’est pas un système POSIX, donc:

  • Comment puis-je gérer les événements d’arrêt pouvant survenir, par exemple à partir de “End Process” dans “Task Manager”?
  • Quelle est l’API standard pour envoyer un signal d’arrêt à une application Win32?

Je ne parle pas de GUI, je parle de serveur TCP / IP qui devrait être bien arrêté. cela ne fonctionne pas comme le service Windows.

Vous obtenez un message WM_QUIT sur votre premier thread créé.

Lorsque vous ne gérez pas cela, votre processus est forcément arrêté.

Il suffit donc d’implémenter une queue de messages dans votre premier thread, qui recherche le message WM_QUIT

MSDNs Le Guide de migration de code Unix contient un chapitre sur la conversion de code Win32 et la gestion du signal .
Bien que Microsoft ait décidé d’archiver ce guide, c’est très utile.

Trois méthodes sont décrites:
Signaux natifs
Objets événement
messages

Peut-être Windows Power Management de MSDN serait utile. Mais il traite des événements système plutôt que par processus.

Pour un processus, vous pourriez détecter une terminaison avec WM_CLOSE . Vous devez gérer les messages Windows. S’il s’agit d’une application console, vous devez installer un gestionnaire de contrôle. jetez un oeil à SetConsoleCtrlHandler sur MSDN