Maison >développement back-end >C++ >Quel est le moyen le plus fiable de gérer les événements Ctrl-C en C ?
Gestion fiable de Ctrl-C en C
Question :
Comment pouvons-nous capturer avec élégance un événement Ctrl-C en C ?
Réponse :
Bien que l'utilisation du signal soit une approche courante, elle n'est pas toujours fiable dans différentes implémentations. Une méthode plus robuste est recommandée en utilisant sigaction.
Voici le code modifié basé sur l'exemple de Tom :
#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; }
Dans ce code révisé, nous utilisons sigaction pour enregistrer une fonction de gestionnaire de signal, my_handler. Cette fonction est exécutée lorsqu'un signal Ctrl-C (SIGINT) est reçu. En utilisant sigaction, nous obtenons plus de contrôle sur les mécanismes de gestion du signal, ce qui rend notre capture d'événements plus fiable.
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!