raise() ist definiert in der signal, die in C über signal.h, bzw. in C++ über csignal eingebunden wird.
raise() springt an ein Ziel, das über die übergebene Umgebungs-Struktur definiert ist.
Dabei wird ein Makro übergeben, das die Art des Signals angibt:
raise( SIGTERM );
#include <signal.h> int raise( signal sig );
sig: Das auszulösende Signal
Rückgabewert: 0 bei Erfolg, ansonsten ein von 0 verschiedener Wert
Für sig stehen dabei folgende Makros zur Verfügung:
| Name | Signal | Bedeutung |
|---|---|---|
| SIGABRT | Abort | Wird durch abort() ausgelöst |
| SIGFPE | Floating-Point Exception | Ungültigen Berechnung (z.B. Division durch 0) |
| SIGILL | Illegal Instruction | Fehler bei der Programmausführung |
| SIGINT | Interrupt | Wird ausgelöst, wenn das Programm gestoppt werden soll (z.B. durch Strg+C) |
| SIGSEGV | Segmentation Violation | Speicherzugriffsfehler |
| SIGTERM | Terminate | Programm soll beendet werden |
#include <stdio.h> #include <signal.h> int main() { printf( "Vor dem Signal\n" ); raise( SIGTERM ); printf( "Nach dem Signal\n" ); return 0; }
Ausgabe:
Vor dem Signal Terminated
Man kann hier deutlich erkennen, dass die Ausführung direkt nach der Auslösung des Signals abgebrochen wird.