Question

Sous POSIX, il existe une API de signal qui permet d’envoyer un signal à traiter 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 susceptibles de survenir, par exemple, à partir de " Fin du processus " dans "Gestionnaire de tâches"?
  • Quelle est l'API standard pour envoyer un signal d'arrêt à une application Win32?

Je ne parle pas d’interface graphique, je parle du serveur TCP / IP qui devrait être bien arrêté. que ne ne fonctionne pas comme le service Windows.

Était-ce utile?

La solution

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

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

Il vous suffit donc de mettre en place une file de messages dans votre premier thread, qui recherche le message WM_QUIT

.

Autres conseils

MSDNs Le guide de migration de code Unix contient un chapitre sur Conversion de code Win32 et traitement du signal .
Bien que Microsoft ait décidé d’archiver ce guide génial, il est très utile.

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

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

Pour un processus, vous pourrez détecter une terminaison avec WM_CLOSE . Vous auriez besoin de gérer les messages Windows. S'il s'agit d'une application console, vous devrez installer un gestionnaire de contrôle. consultez SetConsoleCtrlHandler sur MSDN

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top