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.

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top