Maison > développement back-end > C++ > le corps du texte

Comment gérer gracieusement les événements Ctrl-C en C ?

Mary-Kate Olsen
Libérer: 2024-11-11 01:47:02
original
211 Les gens l'ont consulté

How to Gracefully Handle Ctrl-C Events in C  ?

Capturer les événements Ctrl-C en C

En C, la capture des événements Ctrl-C (SIGINT) est cruciale pour gérer la fin gracieuse du programme. La bibliothèque de signaux fournit un mécanisme simple pour cela, mais sa fiabilité varie selon les différentes implémentations.

Pour garantir un comportement cohérent, il est recommandé d'utiliser la fonction sigaction à la place. Voici une version révisée du code de Tom utilisant sigaction :

#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;
}
Copier après la connexion

Ce code définit un gestionnaire de signal, my_handler, qui imprime un message et quitte le programme lorsqu'un signal SIGINT (Ctrl-C) est reçu. La fonction sigaction enregistre le gestionnaire pour le signal SIGINT et définit les indicateurs nécessaires pour un comportement correct.

Maintenant, lorsque le programme est en cours d'exécution et que Ctrl-C est enfoncé, il captera le signal et invoquera le gestionnaire, qui imprime à son tour le message approprié et termine le programme avec élégance.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal