Strg-C-Ereignisse in C abfangen
In C ist das Erfassen von Strg-C-Ereignissen (SIGINT) für die ordnungsgemäße Programmbeendigung von entscheidender Bedeutung. Die Signalbibliothek bietet hierfür einen unkomplizierten Mechanismus, dessen Zuverlässigkeit jedoch je nach Implementierung variiert.
Um ein konsistentes Verhalten sicherzustellen, wird empfohlen, stattdessen die Sigaction-Funktion zu verwenden. Hier ist eine überarbeitete Version von Toms Code, der Sigaction verwendet:
#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; }
Dieser Code definiert einen Signalhandler, my_handler, der eine Nachricht druckt und das Programm verlässt, wenn ein SIGINT-Signal (Strg-C) empfangen wird. Die Sigaction-Funktion registriert den Handler für das SIGINT-Signal und setzt die notwendigen Flags für korrektes Verhalten.
Wenn nun das Programm ausgeführt wird und Strg-C gedrückt wird, fängt es das Signal ab und ruft den Handler auf, der gibt wiederum die entsprechende Meldung aus und beendet das Programm ordnungsgemäß.
Das obige ist der detaillierte Inhalt vonWie behandle ich Strg-C-Ereignisse in C ordnungsgemäß?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!