SIGHUP

SIGHUP bezeichnet ein Signal innerhalb eines Computers, der ein Unix (oder ähnliches) Betriebssystem hat. In der Regel zeigt das Signal die Beendigung einer Datenverbindung an. Historisch war das eine Verbindung zu einem Terminal über eine Telefonleitung. Daher kommt die Bezeichnung SIGHUP für signal: hang up.

Bei virtuellen Verbindungen kann SIGHUP anzeigen, dass ein bestimmter Prozess beendet ist. SIGHUP-Signale spielen bei der Systemprogrammierung von unixoiden Betriebssystemen eine spezielle Rolle.

Bei Programmen ohne Terminal zeigt SIGHUP an, dass die Konfiguration neu geladen werden soll. Danach werden oft Datenverbindungen neu aufgebaut.

Etymologie

Schweizer Wandtelefon Modell 50, an der linken Seite der aufgehängte Hörer

SIG wird gewöhnlich als Vorsilbe für Signale verwendet. HUP ist ein Kürzel für den englischen Begriff hang up, zu Deutsch aufhängen oder auflegen. Bei historischen Telefonen wurde die Gesprächsverbindung beendet, wenn der Telefonhörer an einem Haken aufgehängt wurde oder der Telefonhörer auf die Gabel gelegt wurde. Diese Begrifflichkeit wurde beibehalten, als Fernschreiber über das Telefonnetz mit einem Rechner verbunden wurden. Historisch ist in den zum Betriebssystem gehörenden Handbüchern die Bedeutung von SIGHUP mit hang up angegeben.[1][2][3] Eine Übersetzung ins Deutsche ist (Daten-)Verbindung beendet.

In neueren Handbüchern wird SIGHUP ausführlicher erläutert: „Hangup detected on controlling terminal or death of controlling process“[4][5][6]

Die Worte controlling und kontrollieren sind falsche Freunde. Im Deutschen steht kontrollieren für „prüfen“ oder „überwachen“.[7] Im Englischen ist „Macht ausüben“, „steuern“ oder „regeln“ gemeint.[8]

Eine Übersetzung von controlling terminal ist Steuerterminal. Das ist das Terminal, an dem durch Eingabe von Steuerzeichen (beispielsweise Strg-C) ein Prozess beeinflusst wird. Ist die Verbindung zum Steuerterminal beendet, wird SIGHUP gesendet. Der Text Hangup detected on controlling terminal bildet den Sachverhalt Verbindung beendet ab.

controlling process bezeichnet ein Steuerprogramm. Das kann der Prozessgruppenführer oder der Sitzungsführer sein. Gibt es ein Steuerterminal (controlling terminal) werden die genannten Prozesse vom Betriebssystem überwacht, death of controlling process (Steuerprogramm beendet) zeigt deren Ende an. Allerdings ist vorher das Steuerterminal abhandengekommen.[9] So bilden „Hangup detected on controlling terminal“ und „death of controlling process“ den gleichen Sachverhalt ab. Die zweite Formulierung ist zum Verständnis eines Terminalemulator hilfreich.

Eine weitere, übliche Funktion von Steuerprogrammen ist es, ein anderes Programm zum erneuten Auswerten seiner Konfiguration zu veranlassen. In diesem Zusammenhang zeigt SIGHUP kein death (Ende) an. Eine Übersetzung ist Anstoss vom Steuerprogramm.

Verwendung

Das Signal SIGHUP wird erzeugt, wenn auf einer Datenleitung zu einem Terminal, einem Drucker o. ä. ein Verbindungsabbruch entdeckt wird. Z. B. wenn bei einem Telefonmodem das Trägersignal nicht mehr wahrnehmbar ist.

Von einem Terminalemulator wird das Signal generiert, wenn das zum Terminal gehörende Fenster geschlossen wird.

Meist führt der Empfang des SIGHUP zum Beenden des Prozesses. Der Empfänger kann eine Signalbehandlung installieren. Dadurch können beim Abbruch Daten gesichert werden, das ist bei vielen Textverarbeitungsprogrammen der Fall. Ein typisches Beispiel ist ex.[10]

Bei Programmen ohne Terminal ist es üblich, dass beim Empfang des SIGHUP die Konfiguration noch einmal ausgewertet wird und das Programm danach weiterläuft.[11][12][13]

Das Signal SIGHUP wird meist vom Gerätetreiber verschickt. Es kann auch mit der C-Funktion kill an einen Prozess, einen Thread oder eine Prozessgruppe geschickt werden. Dies wird z. B. durch die Befehlszeilenprogramme kill oder killall gemacht.

Die Terminalschnittstelle wird mit dem Programm stty eingestellt. Dieses Programm hat u. a. die Optionen hup und clocal.

Siehe auch

Literatur

  • W. Richard Stevens: Programmieren von UNIX-Netzen. Aus dem Englischen von Michael Fuese, Werner Maisch, Eberhard Trautwein. Carl Hanser Verlag, München / Wien 1992, ISBN 3-446-16318-2, Kapitel 2.4 Signale S. 54. (Englische Originalausgabe von Prentince-Hall ISBN 0-13-928748-5)
  • Brian W. Kernighan: Die UNIX Story. dpunkt Verlag, Heidelberg 2021, ISBN 978-3-86490-778-4, S. 38.
  • Jürgen Gulbins: UNIX. 3. Auflage. Springer Verlag, Berlin / Heidelberg / New York 1988, ISBN 3-540-19248-4, S. 106 Kommandos, Programme, Prozesse. S. 575 Systemanschlüsse und C-Bibliotheksfunktionen.

Einzelbelege

  1. HP-UX Reference Volume 3. Hewlett Packard, 1991, HP Part No. 81864-80000, S. 667.
  2. unix.com
  3. SunOS 5.10: /usr/share/man/man3head/signal.h.3head vom 16. Sept. 2006 00:46:56 UTC
    https://software.cfht.hawaii.edu/man/solaris/signal(5)
    https://docs.oracle.com/cd/E36784_01/html/E36873/signal.h-3head.html
  4. Datei /usr/share/man/man7/signal.7.gz vom 2. Februar 2018 geliefert mit Ubuntu 18.04
  5. manpages.ubuntu.com
  6. man7.org
  7. de.wiktionary.org
  8. dict.leo.org
  9. Datei /usr/share/man/man2/setsid.2.gz vom 9. Februar 2020 20:49:27 UTC ausgeliefert mit Ubuntu 20.04 (Abschnitt Notes, dritter und vierter Absatz)
    https://man7.org/linux/man-pages/man2/setsid.2.html (desgleichen)
  10. ex-Spezifikation der Open Group. Abgerufen am 7. September 2016 (englisch).
  11. Bryan Costales, Eric Allman: sendmail. O’Reilly, Cambridge / Köln / Paris / Sebastopol / Tokyo 1997, ISBN 1-56592-222-0. (Kapitel 26.3 Signaling the Daemon S. 449)
  12. Dokumentation des Apache HTTP Server. Je nach Konfiguration des Webbrowsers wird die Seite in Deutsch, Englisch oder einer anderen Sprache angezeigt.
    Ben Laurie, Peter Laurie: Apache. 3. Ausgabe. O’Reilly, Sebastopol u. a. 2002, ISBN 0-596-00203-3, S. 43.
  13. Dokumentation des Postfix (Mail Transfer Agent) (englisch)