Intercepter les événements Ctrl-C en C
Intercepter les événements Ctrl-C est une tâche nécessaire en programmation, en particulier lorsque vous souhaitez répondre gracieusement à interruptions inattendues.
Utilisation de 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
Ce qui suit est le code complet qui utilise la 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.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3