SIGKILL kann einen laufenden Prozess immer beenden, darum geht es. Es gibt andere Signale, die der Anwendung die Möglichkeit geben, zu reagieren.
Das Standardverhalten von SIGINT, SIGTERM, SIGQUIT und SIGHUP ist das Beenden des Programms. Anwendungen dürfen jedoch einen Handler für diese Signale installieren. Das tatsächliche Verhalten von Anwendungen beim Empfang dieser Signale ist daher eine Frage der Konvention (der jede Anwendung folgen kann oder nicht), nicht des Systemdesigns.
SIGINT ist der "schwächste" der Partie. Die übliche Bedeutung lautet: „Hör auf, was du gerade tust, und warte auf weitere Benutzereingaben“. Es ist das von Ctrl+ Cin einem Terminal erzeugte Signal . Nicht interaktive Programme behandeln sie im Allgemeinen wie SIGTERM.
SIGTERM ist das "normale" Kill-Signal. Es weist die Anwendung an, sauber zu beenden. Es kann einige Zeit dauern, bis die Anwendung ihren Status gespeichert hat, um Ressourcen freizugeben, z. B. temporäre Dateien, die sonst zurückbleiben würden usw. Eine Anwendung, die während einer kritischen Anwendung nicht unterbrochen werden möchte, ignoriert möglicherweise SIGTERM für eine Weile.
SIGHUP ist in Bezug auf die Härte mit SIGTERM identisch, spielt jedoch eine besondere Rolle, da es automatisch an Anwendungen gesendet wird, die in einem Terminal ausgeführt werden, wenn der Benutzer die Verbindung zu diesem Terminal trennt (etymologisch, weil der Benutzer eine Verbindung über eine Telefonleitung und das Modem hergestellt hat) aufgehangen). SIGHUP ist im Gegensatz zu SIGTERM, das explizit gesendet werden muss, häufig unfreiwillig. Daher sollten Anwendungen versuchen, ihren Status auf einem SIGHUP zu speichern. SIGHUP hat auch eine ganz andere konventionelle Bedeutung für nicht benutzerbezogene Anwendungen ( Daemons ), nämlich das Neuladen ihrer Konfigurationsdatei.
SIGQUIT ist das härteste der ignorierbaren Signale. Es soll verwendet werden, wenn sich eine Anwendung schlecht verhält und jetzt beendet werden muss. Standardmäßig hat es eine Core-Dump- Datei hinterlassen (moderne Systeme, bei denen die meisten Benutzer nicht wissen, welche Core-Datei sie normalerweise nicht erzeugt). . Anwendungen können einen Handler festlegen, sollten jedoch nur sehr wenig tun (insbesondere keinen Status speichern), da die Absicht von SIGQUIT darin besteht, verwendet zu werden, wenn ein schwerwiegender Fehler vorliegt.
HUP
bedeutet nicht unbedingt, dass das Programm beendet wird. Einige ProgrammeSIGHUP
laden Konfigurationsdateien neu.SIGKILL
scheitert oder wird vielmehr verschoben, wenn sich der Prozess im unterbrechungsfreien Schlaf befindet .