Heim >Backend-Entwicklung >C++ >Wie kann ich Strg-C-Signale in C abfangen?
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:
#include <signal.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h>In diesem Handler können Sie die Aktionen angeben, die ausgeführt werden sollen, wenn Strg C gedrückt wird gedrückt.
void my_handler(int s){ printf("Caught signal %d\n",s); exit(1); }Hier verbinden Sie Ihren Signalhandler mit dem Strg-C-Signal (SIGINT) und legen signalbezogene Einstellungen fest.
struct sigaction sigIntHandler; sigIntHandler.sa_handler = my_handler; sigemptyset(&sigIntHandler.sa_mask); sigIntHandler.sa_flags = 0; sigaction(SIGINT, &sigIntHandler, NULL);Diese Funktion bewirkt, dass das Programm auf Signale wartet, einschließlich Strg C.
pause();Beispiel:
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!