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; }
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!