Intercepter les événements Ctrl-C en C
Intercepter les événements Ctrl-C est une tâche nécessaire en programmation, surtout lorsque vous souhaitez répondre gracieusement à interruptions inattendues.
Utiliser Sigaction
En C, il est plus fiable d'utiliser la fonction sigaction pour gérer les signaux. La syntaxe est la suivante :
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
Où :
Dans l'exemple donné par Thomas, la structure sigaction est la suivante :
struct sigaction sigIntHandler; sigIntHandler.sa_handler = my_handler; sigemptyset(&sigIntHandler.sa_mask); sigIntHandler.sa_flags = 0;
Où :
Utilisez cette structure de sigaction avec le signal SIGINT :
sigaction(SIGINT, &sigIntHandler, NULL);
Fonction de gestionnaire
Enfin, vous avez besoin d'une fonction de gestionnaire pour répondre au signal. Dans l'exemple, my_handler imprime simplement un message et quitte le programme :
void my_handler(int s){ printf("Caught signal %d\n", s); exit(1); }
Code complet
Voici le code complet utilisant sigaction pour capturer les événements Ctrl-C :
#include#include #include #include 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; }
En utilisant sigaction, vous pouvez détecter de manière fiable les événements Ctrl-C et prendre les mesures appropriées.
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!