B.13 <signal.h> 

Zur Behandlung von Signalen finden Sie in der Headerdatei <signal.h> folgende zwei Funktionen:
Funktion | Beschreibung |
void(*signal( int sig, void (*func)(int)))(int); |
Einen Signal-Handler einrichten. Ein Signal-Handler ist im Grunde eine gewöhnliche Funktion, die beim Eintreffen eines Signals ausgeführt wird. |
int raise(int sig); |
ein Signal senden (auslösen) |
Für das erste Argument von signal() bzw. raise() geben Sie die Signalnummer an, die behandelt bzw. gesendet werden soll. Hierfür sind im Standard mindestens folgende Makros vom Typ int definiert:
Name | Bedeutung |
SIGABRT |
Dieses Signal signalisiert, dass sich das Programm abnormal beendet hat (abort()). |
SIGFPE |
Dieses Signal wird z. B. bei einer Division durch 0 oder bei einem Überlauf einer Zahl angezeigt. |
SIGILL |
Dieses Signal wird angezeigt, wenn ein illegaler Hardware-Befehl ausgeführt wird. |
SIGINT |
Dieses Signal wird an alle Prozesse geschickt, wenn die Tastenkombination (Strg) + (C) gedrückt wurde. |
SIGSEGV |
Wird dies angezeigt, wurde versucht, auf eine unerlaubte Speicherstelle zu schreiben oder diese zu lesen. |
SIGTERM |
Beendigung eines Programms |
Mit dem zweiten Argument der Funktion legen Sie entweder die Adresse des Signal-Handlers fest, oder Sie können eines der folgenden Makros verwenden:
Makro | Beschreibung |
SIG_DFL |
Tritt das Signal auf, wird der Standard-Signal-Handler verwendet. |
SIG_IGN |
Tritt das Signal auf, wird dieses ignoriert. |
SIG_ERR |
Dies ist der Rückgabewert von der Funktion signal(), wenn ein Fehler aufgetreten ist. |
Des Weiteren ist in der Headerdatei <signal.h> ein Typ sig_atomic_t vorhanden, der Ihnen Zugriff auf atomare Operationen (beispielsweise als Hardware-Interrupt bei Signal-Handlern) ermöglicht. Der Wertebereich von sig_atomic_t ist in der Headerdatei <stdint.h> mit den Makros SIG_ATOMIC_MIN und SIG_ATOMIC_MAX definiert.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.