Thread Systray-Anwendung bleibt hängen beim Windows herunterfahren (16 answers)
Opened by bob.george at 2012-07-17 13:38

topeg
 2012-07-18 15:32
#160014 #160014
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
bei POSIX-Konformen Betriebsystemen gibt es Signale die an ein Programm gesendet werden können. Unter Perl werden die Handler dieser Signale als Anonyme Funktionen aus dem Hash %SIG aufgerufen. Also so: $SIG{<Name ohne das "SIG">}=sub{ <code der ausgeführt werden soll> };

Die Signale die für dich interessant sein sein dürfen sind: "SIGTERM", "SIGKILL" und "SIGQUIT"
SIGTERM wird gesendet wenn das Programm sich beenden soll. Das ist als dringende Bitte zu verstehen. Das Programm hat Zeit seine Angelegenheiten zu regeln und sich sauber zu beenden (offen Dateien schließen, abschließendes Log schreiben, eine Meldung auf die Konsole machen, etc.)
SIGKILL wird gesendet wenn das Programm beendet wird. Das Programm wird vom Manager "abgewürgt" ohne das das Programm dagegen etwas machen kann. Das Programm bekommt von dem Signal nichts mehr mit, da es vorher schon beendet wurde.
SIGQUIT Das Programm soll sich so schnell wie möglich beenden und ein "CodeDump" machen. Es hängt vom System ab wie viel zeit einem Programm dafür bleibt. Auf machen Systemen ist das Bitte zu verstehen, auf andren ist es eine Warnung, dass der Prozess innerhalb eines bestimmten Zeitraums beendet wird. Ein Codedump ist der aktuelle Zustand es Programms und dient eigentlich zu Diagnosezwecken. Darin enthalten kann sein: Inhalt aller Variablen, Offene Dateien, Gerade laufende Funktionen. Es ist kein festes Format für ein Codedump vorgesehen. Mache, nicht POSIX konforme Systeme erwarten, das ein Programm, dem ein Coredump über die Kommandozeile übergeben wurde, dort weitermachen, wo sie mittels SIGQUIT beendet wurden. Das ist/war bei Echtzeitystemen recht verbreitet.

Windows ist nicht vollständig POSIX Konform, aber die Signale sendet es, in der Reihenfolge (sofern ich mich richtig erinnre):Zuerst wird SIGTERM gesendet, wenn innerhalb einer Frist nicht reagiert kommt SIGQUIT dran und wenn dann keine Reaktion erfolgt kommt die Warnung und dann wird SIGKILL gesendet und der Prozess beendet.

View full thread Systray-Anwendung bleibt hängen beim Windows herunterfahren