Heim >Backend-Entwicklung >C++ >Was ist der zuverlässigste Weg, Strg-C-Ereignisse in C zu verarbeiten?
Zuverlässige Strg-C-Verarbeitung in C
Frage:
Wie können wir elegant erfassen? ein Strg-C-Ereignis in C ?
Antwort:
Obwohl die Verwendung von Signalen ein gängiger Ansatz ist, ist sie bei verschiedenen Implementierungen nicht immer zuverlässig. Eine robustere Methode wird mit Sigaction empfohlen.
Hier ist der geänderte Code basierend auf Toms Beispiel:
#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); // or perform other necessary actions } int main() { struct sigaction sigIntHandler; sigIntHandler.sa_handler = my_handler; sigemptyset(&sigIntHandler.sa_mask); sigIntHandler.sa_flags = 0; sigaction(SIGINT, &sigIntHandler, NULL); pause(); // block the main thread until a Ctrl-C signal is received return 0; }
In diesem überarbeiteten Code verwenden wir Sigaction, um eine Signalhandlerfunktion, my_handler, zu registrieren. Diese Funktion wird ausgeführt, wenn ein Strg-C-Signal (SIGINT) empfangen wird. Durch den Einsatz von Sigaction erhalten wir mehr Kontrolle über die Signalverarbeitungsmechanismen und machen unsere Ereigniserfassung zuverlässiger.
Das obige ist der detaillierte Inhalt vonWas ist der zuverlässigste Weg, Strg-C-Ereignisse in C zu verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!