Win32 API Analogon von Senden / Fang SIGTERM
Frage
Unter POSIX OS gibt es Signal API, die ein Signal senden können verarbeiten es herunterzufahren mit kill und Sie können es mit sigaction fangen und tun, was Sie brauchen;
Allerdings Win32 ist nicht POSIX-System, so:
- Wie kann ich Shutdown Ereignisse behandeln, die beispielsweise aus „Prozess beenden“ in „Task-Manager“? kann kommen,
- Was ist der Standard-API für Shutdown-Signal an Win32-Anwendung zu senden?
Ich spreche nicht über GUI, ich spreche über TCP / IP-Server, die gut abgeschaltet werden sollen. dass nicht laufen wie Windows-Dienst.
Lösung
Sie erhalten eine WM_QUIT
Nachricht auf dem ersten erstellten Thread.
Wenn Sie behandeln nicht, dass Ihr Prozess ist gewaltsam ausgeschaltet.
So implementieren nur eine Nachrichtenwarteschlange in Ihrem ersten Thread, der für die WM_QUIT
Nachricht sieht
Andere Tipps
MSDNs Unix-Code Migration Guide hat ein Kapitel über Win32 Codeumwandlung und Signal Handhabung .
Obwohl Microsoft diese genialen Führer zur Archivierung entschieden hat, ist es sehr nützlich.
Drei Methoden werden beschrieben:
Einheimische Signale
Ereignisobjekte
Nachrichten
Kann Windows-Power-Management werden von MSDN wäre hilfreich. Aber es beschäftigt sich mit Systemereignissen und nicht pro Prozess.
Für einen Prozess, würden Sie in der Lage sein, Terminierung mit WM_CLOSE
zu erkennen. Sie müßten Windows-Nachrichten verarbeiten. Wenn es sich um eine Konsolenanwendung ist müssten Sie einen Steuer Handler installieren; einen Blick auf SetConsoleCtrlHandler auf MSDN