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.