[C] Terminer un programme par Ctrl-c
Résolu
Bonjour,
J'ai un programme qui tourne en boucle et j'aimerais pouvoir le stopper avec Ctrl-C par exemple. Dans un terminal, cette combinaison me stoppe le programme mais j'ai des fonctions à faire avant de quitter (vidage de mémoire entre autre).
Si vous avez des idées, elles sont bienvenue.
Merci beaucoup !
J'ai un programme qui tourne en boucle et j'aimerais pouvoir le stopper avec Ctrl-C par exemple. Dans un terminal, cette combinaison me stoppe le programme mais j'ai des fonctions à faire avant de quitter (vidage de mémoire entre autre).
Si vous avez des idées, elles sont bienvenue.
Merci beaucoup !
Configuration: Linux Firefox 3.0.1
4 réponses
-
Il suffit de mettre : signal(SIGINT, stop_capturing);
-
Salut,
la solution la plus simple me semble être de rajouter une condition a ta boucle (loop while) en détectant l'appui sur une combinaison de touche et cette sortie de boucle déclenche l'exécution de tes fonctions avant d'arrêter le programme.
A+ -
Ok merci,
n'y a t'il pas des solutions utisant des signaux ? -
Contributeuroui, man signal
sighandler_t signal(int signum, sighandler_t handler);
ou signum est le N° du signal, pour ctrl-c : SIGQUIT 3 Core Quit from keyboard (man signal(7))-
-
@dasdqwjdest-ce que ça s'utilise comme ça ? dans mon main j'ai mis : signal(SIGQUIT, stop_capturing);
stop_capturing étant la fonction que je souhaite lancer au moment de quitter.
J'ai testé et quand je fais Ctrl-C, ça ne marche pas, donc je dois me tromper ! :D -
Contributeur@dasdqwjdSIGQUIT ou SIGINT, je ne sais plus, essayer les 2.
la fonction stop_capturing doit terminer par exit(1); après avoir fait le ménage.
-