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:
Makrosignal
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<stdio.h>
#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...

C-Standardbibliothek - <signal.h>

Weitere Erweiterungen