Heim > Backend-Entwicklung > C++ > Hauptteil

Wie kann ich Strg-C-Signale in C abfangen?

DDD
Freigeben: 2024-11-16 15:26:03
Original
314 Leute haben es durchsucht

How can I intercept Ctrl C signals in C  ?

Control-C-Signale in C abfangen

Im Bereich der Programmierung ist es oft notwendig, Tastaturereignisse zu erfassen, wie zum Beispiel die allgegenwärtige Strg-Taste C, was normalerweise die Programmbeendigung auslöst. Dieser Artikel befasst sich mit diesem speziellen Bedarf: Wie fängt man Strg-C-Signale in C ab? Ereignisse: Signal und Sigaktion.

Verwenden Sigaction

Die Sigaction-Funktion bietet im Vergleich zu Signal einen zuverlässigeren Ansatz, da sie eine bessere Kontrolle und Portabilität über verschiedene Implementierungen hinweg bietet. Um Sigaction zu verwenden, folgen Sie diesen Schritten:

Erforderliche Header einschließen:

  1. Definieren Sie eine Signalhandlerfunktion:

    #include <signal.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <unistd.h>
    Nach dem Login kopieren
    In diesem Handler können Sie die Aktionen angeben, die ausgeführt werden sollen, wenn Strg C gedrückt wird gedrückt.
  2. Konfigurieren Sie die Sigaktion:
    void my_handler(int s){
        printf("Caught signal %d\n",s);
        exit(1); 
    }
    Nach dem Login kopieren

    Hier verbinden Sie Ihren Signalhandler mit dem Strg-C-Signal (SIGINT) und legen signalbezogene Einstellungen fest.
  3. Programm anhalten:
    struct sigaction sigIntHandler;
    
    sigIntHandler.sa_handler = my_handler;
    sigemptyset(&amp;sigIntHandler.sa_mask);
    sigIntHandler.sa_flags = 0;
    
    sigaction(SIGINT, &amp;sigIntHandler, NULL);
    Nach dem Login kopieren

    Diese Funktion bewirkt, dass das Programm auf Signale wartet, einschließlich Strg C.
  4. pause();
    Nach dem Login kopieren
    Beispiel:

  5. Das folgende Beispiel zeigt, wie Sigaction zum Erfassen von Strg C verwendet wird Ereignisse:

Wenn Sie dieses Programm ausführen und Strg C drücken, wird „Signal 2 gefangen“ gedruckt und beendet anmutig.

Das obige ist der detaillierte Inhalt vonWie kann ich Strg-C-Signale in C abfangen?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage