[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 !
Configuration: Linux
Firefox 3.0.1

4 réponses

  1. Il suffit de mettre : signal(SIGINT, stop_capturing);
    1. 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+
      1. Ok merci,
        n'y a t'il pas des solutions utisant des signaux ?
        1. Désolé trop compliqué pour mes faibles compétences.
      2. Contributeur
        oui, 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))
        1. Merci pour votre réponse, pouvez vous me dire comment faire pour que ça attende le signal SIGQUIT ??
          où le mettre dans mon programme ?

          Merci encore
        2. @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
        3. 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.