C Standard-Bibliothek

Signale: <signal.h> und <sys/signal.h>


Die Definitionsdatei <signal.h> stellt Hilfsmittel zur Behandlung von Ausnahmebedingungen zur Verfügung, die während der Ausführung eines Programms eintreten können, wie zum Beispiel ein "lnterrupt-Signal" von einer externen Quelle oder ein Fehler während der Ausführung.

  void (*signal(int sig, void (*handler)(int)))(int)

signal legt fest, wie nachfolgende Signale behandelt werden. Wird SIG_DFL als handler angegeben, so wird nach einer implementierungsabhängigen Voreinstellung verfahren; wird SIG_IGN angegeben, so wird das Signal ignoriert; andernfalls wird die Funktion aufgerufen, auf die handler verweist. Die Funktion erhält als Argument den Signaltyp. Unter anderem gelten folgende Signale
SIGABRTanomaler Abbruch, zum Beispiel durch abort
SIGFPEArithmetikfehler, zum Beispiel Division durch Null oder Overflow
SIGILLillegaler Funktionstext, zum Beispiel illegaler Maschinenbefehl
SIGINTDialogsignal, zum Beispiel interrupt
SIGSEGVillegaler Speicherzugriff, zum Beispiel außerhalb von Speichergrenzen
SIGTERMAufforderung an das Programm, sich zu beenden

signal liefert den vorhergehenden Wert von handler für das angegebene Signal, oder SIG_ERR, wenn ein Fehler passiert.

Trifft später ein Signal sig ein, wird für dieses Signal wieder die Behandlung nach Voreinstellung festgelegt; anschließend wird die vereinbarte Funktion in der, Form (*handler)(sig) aufgerufen. Wenn dieser Funktionsaufruf zu Ende geht, wird die Ausführung an dem Punkt fortgesetzt, an dem das Signal eintraf.

Der anfängliche Zustand der Signale ist implementierungsabhängig.

  int raise(int sig)

raise sendet das Signal sig an das Programm und liefert einen von Null verschiedenen Wert bei Fehler.


[ Anfang der Seite | Inhaltsverzeichnis | Funktions-Register Header-Register ]

 

15. November 1999, Peter Klingebiel, DVZ