Heim > Backend-Entwicklung > C++ > Wie behandle ich Strg-C-Ereignisse in C ordnungsgemäß?

Wie behandle ich Strg-C-Ereignisse in C ordnungsgemäß?

Mary-Kate Olsen
Freigeben: 2024-11-11 01:47:02
Original
252 Leute haben es durchsucht

How to Gracefully Handle Ctrl-C Events in C  ?

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;
}
Nach dem Login kopieren

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage