C-Bibliotheksfunktionen -raise()
C-Standardbibliothek - <signal.h>
Beschreibung
C-Bibliotheksfunktionenint raise(int sig)Bewirkt, dass ein Signal erzeugt wirdsig。sigDer Parameter ist mit den SIG-Makros kompatibel.
raiseDie Funktion ist eine Funktion in der C-Standardbibliothek und wird verwendet, um Signale an den aktuellen Prozess zu senden. Sie ist definiert in<signal.h>der Header-Datei und ermöglicht es dem Programm, Signale an sich selbst zu senden, um den entsprechenden Signal-Handler auszulösen.
Deklaration
Das Folgende ist die Deklaration der raise()-Funktion.
int raise(int sig)
Parameter
- sig-- Der Signalcode, der gesendet werden soll. Die folgenden sind einige wichtige Standard-Signal-Konstanten:
| Makro | signal |
|---|---|
| SIGABRT | (Signal Abort) Das Programm wurde abnormal beendet. |
| SIGFPE | (Signal Floating-Point Exception) Ein arithmetischer Operationsfehler ist aufgetreten, wie Division durch Null oder Überlauf (nicht unbedingt eine Gleitkommaoperation). |
| SIGILL | (Signal Illegal Instruction) Ungültiges Funktionsabbild, z. B. eine ungültige Anweisung, gewöhnlich verursacht durch eine Abweichung im Code oder einen Versuch, Daten auszuführen. |
| SIGINT | (Signal Interrupt) Ein Unterbrechungssignal, wie z. B. Ctrl-C, das normalerweise vom Benutzer erzeugt wird. |
| SIGSEGV | (Signal Segmentation Violation) Ungültiger Speicherzugriff, wie z. B. der Zugriff auf eine nicht vorhandene Speichereinheit. |
| SIGTERM | (Signal Terminate) Das Beendigungsanforderungssignal, das an dieses Programm gesendet wird. |
Rückgabewert
Bei Erfolg gibt die Funktion null zurück; andernfalls gibt sie einen Wert ungleich null zurück.
Beispiel
Das folgende Beispiel demonstriert die Verwendung der Funktion raise().
Beispiel
#include<stdlib.h>
#include<signal.h>
void signal_catchfunc(int);
int main() {
int ret;
signal(SIGINT, signal_catchfunc);
printf("Signalgenerierung starten\n");
ret = raise(SIGINT);
if (ret != 0) {
printf("Fehler, SIGINT-Signal kann nicht erzeugt werden\n");
exit(0);
}
printf("Beenden....\n");
return 0;
}
void signal_catchfunc(int signal) {
printf("Signal abgefangen\n");
}
Lassen Sie uns das obige Programm kompilieren und ausführen, was das folgende Ergebnis erzeugt:
Start generating a signal !! Signal Capture !! Exit...Weitere Erweiterungen