====== 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 [[linux: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.) | ===== Signal Links ===== * [[http://www.wlug.org.nz/Signal|Signals]]