Maison >développement back-end >C++ >Comment puis-je intercepter les signaux Ctrl C en C ?
Interception des signaux Control-C en C
Dans le domaine de la programmation, il est souvent nécessaire de capturer les événements du clavier, tels que l'omniprésent Ctrl C, qui déclenche généralement la fin du programme. Cet article répond à ce besoin spécifique : comment intercepter les signaux Ctrl C en C .
Capturer les événements Ctrl C
En C , il existe deux méthodes principales pour capturer Ctrl C événements : signal et sigaction.
Utilisation de sigaction
La fonction sigaction offre une approche plus fiable par rapport au signal, car elle offre un plus grand contrôle et une plus grande portabilité entre différentes implémentations. Pour utiliser sigaction, suivez ces étapes :
Incluez les en-têtes nécessaires :
#include <signal.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h>
Définissez une fonction de gestionnaire de signal :
void my_handler(int s){ printf("Caught signal %d\n",s); exit(1); }
Dans ce gestionnaire, vous pouvez spécifier les actions à effectuer lorsque Ctrl C est enfoncé.
Configurez la sigaction :
struct sigaction sigIntHandler; sigIntHandler.sa_handler = my_handler; sigemptyset(&sigIntHandler.sa_mask); sigIntHandler.sa_flags = 0; sigaction(SIGINT, &sigIntHandler, NULL);
Ici, vous attachez votre gestionnaire de signal au signal Ctrl C (SIGINT) et spécifiez les paramètres liés au signal.
Suspendre le programme :
pause();
Cette fonction amène le programme à attendez les signaux, y compris Ctrl C.
Exemple :
L'exemple suivant montre comment utiliser la sigaction pour capturer les événements Ctrl C :
#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; }
Lorsque vous exécutez ce programme et appuyez sur Ctrl C, il imprimera "Caught signal 2" et se terminera gracieusement.
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!