Strg-C-Ereignisse in C abfangen
Das Abfangen von Strg-C-Ereignissen ist eine notwendige Aufgabe in der Programmierung, insbesondere wenn Sie elegant darauf reagieren möchten unerwartete Unterbrechungen.
Sigaction verwenden
In C ist es zuverlässiger, die Sigaction-Funktion zur Signalverarbeitung zu verwenden. Die Syntax lautet wie folgt:
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
Wobei:
Im Beispiel von Thomas lautet die Sigaction-Struktur wie folgt:
struct sigaction sigIntHandler; sigIntHandler.sa_handler = my_handler; sigemptyset(&sigIntHandler.sa_mask); sigIntHandler.sa_flags = 0;
Wobei:
Verwenden Sie diese Sigaction-Struktur mit dem SIGINT-Signal:
sigaction(SIGINT, &sigIntHandler, NULL);
Handler-Funktion
Schließlich benötigen Sie eine Handler-Funktion, um zu antworten zum Signal. Im Beispiel gibt my_handler einfach eine Nachricht aus und beendet das Programm:
void my_handler(int s){ printf("Caught signal %d\n", s); exit(1); }
Vollständiger Code
Hier ist der vollständige Code, der Sigaction verwendet, um Strg-C-Ereignisse zu erfassen :
#include#include #include #include 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; }
Durch die Verwendung von Sigaction können Sie Strg-C zuverlässig abfangen Beheben Sie den Vorfall und ergreifen Sie entsprechende Maßnahmen.
Das obige ist der detaillierte Inhalt vonWie kann man Strg-C-Interrupts in C mit der Sigaction-Funktion elegant behandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!