POSIX Signals
POSIX Signale (engl. „Signals“) sind Nachrichten die von einem zu anderen Prozess gesendet werden (um Statusänderungen anzuzeigen).
Wichtigere/oft benutzte Signale sind fett markiert, angegeben sind ist die Standverwendung, Programm können diese möglicherweise ignorieren oder anders verwenden.
Tastenkomination eines Terminals lassen sich mit stty -a heraussfinden.
Signal | Bedeutung/ Wirkung |
---|---|
SIGHUP | Hangup (Programme bekommen dieses Signal wenn das Terminal geschlossen wird, daemons reagieren meist wird dem Neulesen der Konfiguration) |
SIGINT | Signal: Interrupt (beendet ein Programm, wird im Terminal normalerweise mit Tastenkombination „STRG“ + „C“ ausgelöst) |
SIGQUIT | Quit (beendet ein Programm und verlanlasst dieses eine Core-Dump (eine Speicherabbild zur Fehleranalyse) zu schreiben, im Terminal ist die Tastenkombination üblichweise „STRG“ + „\“) |
SIGILL | Illegal Instruction (illegale Anwendung oder CPU-Code, beendet ein Programm und erstellt einen Core-Dump) |
SIGTRAP | Breakpoint/Trace Trap (zum debuggen von Programmen) |
SIGABRT (aka SIGIOT) | Abort (oder: „Signal: IOT Trap“; ein Programm beendet sich weil es eine illegalen Zustand festgestellt hat und erstellt eine Core-Datei) |
SIGBUS | Bus Error (ein Speicherzugriff wurd auf eine unzulässige Weise versucht, beendet ein Programm und erstellt eine Core-Datei) |
SIGFPE | FloatingPoint Exception (beendet ein Programm und erstellt eine Core-Datei weil ein Fließkommafehler „floating point error“ auftrat:* Integer divide by zero * Integer overflow * FloatingPoint divide by zero * FloatingPoint overflow * FloatingPoint underflow * FloatingPoint inexact result * FloatingPoint invalid operation * Subscript out of range |
SIGKILL | KILL (beendet ein Programm radikal und sofort ohne Möglichkeit dieses Signal abzufangen oder zu ignorieren. Es hat auf allen Systemen die Nummer 9 und sollte nur als letzte Maßnahme angewandt werden) |
SIGUSR1 | User defined Signal 1 (Benutzerdefiniertes Signal, dd reagiert z. B. mit dem aktuellen Kopierfortschritt; Standardmäßig beendet sich ein Programm nach diesem Signal) |
SIGSEGV | Segmentation Violation (bzw. SegmentationFault; dieses Signal tritt bei falschen Referenzen auf Speicher auf, das Programm wird beendet und eine Core-Datei erstellt. Ursache sind fast immer Programmierfehler:* ein "pointer" ist "NULL" (unreferenziert, uninitialisiert oder bereits freigegeben) * eine Adresse ist nicht zum Objekt zugeordnet (z. B. unbenutzter oder bereits durch das Betriebssysten freigegebener Speicher) * ungültige Zugriffsrechte |
SIGUSR2 | User defined signal 2 (reserviert für IPC oder andere Mechanismen, normalerweise beendet sich ein Programm nach diesem Signal) |
SIGPIPE | Pipe (ausgelöst wenn ein Programm auf einen Socket oder fifo schreibt, der keinen Empfänger hat. Standardmäßig beendet sich ein Programm nach diesem Signal) |
SIGALRM | Alarm (wird nach einer bestimmten Anzahl von Sekunden nach dem Aufruf des alarm(2)-Systembefehls ausgelöst. Wird oft für die Erkennung von timeouts bei Systembefehlen benutzt, standardmäßig beendet sich ein Programm nach diesem Signal) |
SIGTERM | Signal: Terminate (ein Programm bekommt die Möglichkeit sich sauber zu beenden indem es das Signal abfängt. Standardmäßig beendet sich ein Programm nach diesem Signal) |
SIGSTKFLT | Signal: Stack fault on coprocessor (Standardmäßig beendet sich ein Programm nach diesem Signal) |
SIGCHLD | Child process (Ein abgeleiteter Kindprozeß hat seinen Status geändert, z. B. ein Signal empfangen oder sich beendet. Durch das Abfangen dieses Signals können Zombie-Prozesse erkannt und vermieden werden. Wird Standardmäßig ignoriert - SIG_DFL.) |
SIGCONT | Continue (Ein Prozeß kann von einem vorherigen SIGSTOP weiter machen. Im Gegensatz zu SIGSTOP kann SIGCONT abgefangen werden.) |
SIGSTOP | Stop (Hält einen Prozeß an bis ein SIGCONT empfangen wird, kann nicht abgefangen oder ignoriert werden.) |
SIGTSTP | Terminal Stop (Die STOP-Tastenkomination „STRG“ + „Z“ wurde an ein Terminal gesendet. Standardmäßig hält dies einen Prozeß wie bei SIGSTOP an.) |
SIGTTIN | Terminal Input on Background Process (Ein Prozeß versucht von einem Terminal zu lesen, das er nicht mehr kontrolliert. Das Programm wird angehalten bis SIGCONT gesendet wird.) |
SIGTTOU | tty output on background process (Ein Hintergrund-Prozeß hat versucht auf ein Terminal auszugeben, das Programm wird angehalten bis SIGCONT gesendet wird. Das Signal kann abgefangen oder ignoriert werden, siehe SIGTTIN.) |
SIGURG | Urgent (wird vom Betriebssystem gesendet wenn eilige Daten auf einem socket warten, wird standardmäßig ignoriert. |
SIGXCPU | CPU Time limit exceeded (ein mit ulimit(1) gesetztes CPU-Zeitlimit wurde überschritten, beendet ein Programm und erstellt einen Core-Dump) |
SIGXFSZ | File size limit exceeded (ein mit ulimit(1) gesetzte maximale Dateigröße wurde überschritten, beendet ein Programm und erstellt einen Core-Dump) |
SIGVTALRM | Virtual Alarm Clock (User-mode Signal das ein Programm beendet) |
SIGPROF | Profiling Timer Expired (benutzt für statistische Leistungsanalyse/Profiling, beendet den Prozeß) |
SIGWINCH | Window size Change (Wird an einen Prozeß gesendet wenn sich die Größe des Terminalfensters ändert. Standardmäßig wird das Signal ignoriert.) |
SIGIO | Input/Output now possible (Ein Programm bekommt dieses Signal wenn ein E/A möglich wurde. Siehe fcntl(2); Standardmäßig wird das Programm geschlossen.) |
SIGPWR | Powerfail (Wird ausschließlich an Init gesendet wenn der Kernel einen Spannungsausfall erkannt hat und an einer USV läuft.) |
SIGSYS | Bad argument to routine (Falsches Argument an eine Routine, Standardmäßig wird das Programm geschlossen.) |