Thread daemon killen (10 answers)
Opened by Froschpopo at 2006-09-27 23:12

Dubu
 2006-09-28 15:09
#70344 #70344
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=topeg,27.09.2006, 22:49]Das normale Signal ist "QUIT". Es sagt dem Programm sich normal zu beenden, die letzten Aktionen aus zu führen, Sicherrungen vor zu nehmen und alle belegten Resourcen (Netzwerkverbindungen, offenen Dateien, belegter Speicher etc.) frei zu geben.
[/quote]
Eigentlich nicht. Ein SIGQUIT wird normalerweise nur für's Debugging benutzt, weil damit nicht nur der Prozess beendet wird, sondern auch (vorbehaltlich anderer ulimit-Einstellungen) ein core-File erzeugt. In der Shell kann ein SIGQUIT durch Ctrl-\ erzeugt werden.

Was du beschreibst, trifft eher auf SIGTERM (s.u.) oder SIGINT zu.

Allerdings muss nur ein SIGTERM zwingend zu einem Abbruch des Programms führen, ein SIGINT (in der Shell meist mit Ctrl-C ausgelöst) bewirkt zwar in den meisten Fällen ebenfalls einen kontrollierten Programmabbruch, ein Programm darf darauf aber auch anders reagieren. Da ein SIGINT normalerweise von einer interaktiven Shell ausgeführt wird, kann ein Programm beispielsweise nachfragen, ob wirklich abgebrochen werden soll.

Quote
"TERM" soll dafür sorgen, daß das Programm sofort beendet wird, allso keinerlei Sicherungen, oder sonstige Aktionen ausführt. Nur alle Resourcen sind, wenn möglich, frei zu geben.

Was du hier beschreibst, ist - wie nepos schon schrieb - SIGKILL. Ein SIGKILL führt zum sofortigen Programmabbruch und kann nicht im Programm abgefangen werden.

SIGTERM ist im Gegenteil die "schonendste" Methode, einen Prozess zu beenden. Es ist das Default-Signal von kill(1), d.h. wenn man bei "kill <pid>" kein Signal angibt, wird ein SIGTERM an den Prozess geschickt.

Also kurz gefasst:
SIGINT: Ctrl-C, meist kontrollierter Programmabbruch
SIGTERM: Default für kill(1), kontrollierter Programmabbruch
SIGQUIT: Ctrl-\, kontrollierter Programmabbruch mit Coredump
SIGKILL: "kill -9", nicht-kontrollierbarer Programmabbruch

Die englische Wikipedia hat eine ganz gute Übersicht mit Artikeln zu den wichtigsten Signalen.

View full thread daemon killen