Heim > Backend-Entwicklung > C++ > Wie kann „sigaction' verwendet werden, um Strg-C-Ereignisse in C zu verarbeiten?

Wie kann „sigaction' verwendet werden, um Strg-C-Ereignisse in C zu verarbeiten?

Barbara Streisand
Freigeben: 2024-11-15 03:41:02
Original
304 Leute haben es durchsucht

How Can `sigaction` Be Used to Handle Ctrl-C Events in C  ?

Verwenden von Sigaction zum Behandeln von Strg-C-Ereignissen in C

Um ein Strg-C-Ereignis in C effizient abzufangen, ist der zuverlässigste Ansatz die Verwendung von „Sigaction“. Funktion. Es bietet mehr Kontrolle und Kompatibilität als die einfache Signalfunktion.

Die Implementierung von Sigaction erfordert einen strukturierten Ansatz:

  1. Deklarieren Sie eine Sigaction-Struktur:
    Definieren Sie eine „sigaction“-Struktur mit dem Namen „sigIntHandler“.
  2. Legen Sie den Signalhandler fest:
    Weisen Sie „sigIntHandler.sa_handler“ die Adresse der Handlerfunktion („my_handler“) zu. Führen Sie in der Handler-Funktion beim Empfang des Signals die gewünschten Aktionen aus.
  3. Signalmaske initialisieren:
    Initialisieren Sie „sigIntHandler.sa_mask“ mit „sigemptyset“ auf einen leeren Signalsatz. Dadurch kann der Handler auf das angegebene Signal reagieren, ohne andere zu blockieren.
  4. Signalaktionsflags setzen:
    Setzen Sie „sigIntHandler.sa_flags“ auf „0“, um die Standardoptionen zu verwenden.
  5. Signalaktion registrieren:
    Verwenden Sie „sigaction“ mit dem „SIGINT“-Signal und der definierten Handlerstruktur („sigIntHandler“), um die Signalaktion zu registrieren.
  6. Ausführung anhalten:
    Rufen Sie „pause()“ auf, um die Programmausführung anzuhalten, bis ein Signal empfangen wird.
  7. Beispielcode:
    Das Folgende Der geänderte Code aus der Frage demonstriert die Verwendung von „Sigaction“:
#include <signal.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

void my_handler(int s){
    printf("Caught signal %d\n",s);
    exit(1);
}

int main(int argc,char** argv)
{
    struct sigaction sigIntHandler;
    
    sigIntHandler.sa_handler = my_handler;
    sigemptyset(&sigIntHandler.sa_mask);
    sigIntHandler.sa_flags = 0;
    
    sigaction(SIGINT, &sigIntHandler, NULL);
    pause();
    
    return 0;    
}
Nach dem Login kopieren

Dieser Ansatz bietet einen robusten Mechanismus für die Behandlung von Strg-C-Ereignissen in C und gewährleistet Zuverlässigkeit und Effizienz in verschiedenen Implementierungen.

Das obige ist der detaillierte Inhalt vonWie kann „sigaction' verwendet werden, um Strg-C-Ereignisse in C zu verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage