• # exploiter le Ctrl+C plutôt que de le masquer ?

    Posté par . En réponse au message Système. Évalué à 4.

    Personnellement j'utilise plutôt ce code :

    #include <signal.h>
    #define CTRL_C_LIM 3
    int please_exit = 0;
    void exitApp(int sig)
    {
     if (please_exit < CTRL_C_LIM)
     {
     fprintf(stderr,"CTRL+C received");
     please_exit++;
     }
     else
     {
     fprintf(stderr,"CTRL+C received too many times, forcing exit");
     exit();
     }
    }
    int main(int argc, char** argv)
    {
     signal(SIGINT, exitApp);
     // programme principal
     // dès que la variable please_exit est non nulle, on quitte proprement le programme
     // par exemple
     while (!please_exit)
     {
     // ...
     }
    }

    Ça permet au programme de balancer des "attend un peu que je finisse" tout en permettant à l'utilisateur de marteler Ctrl+C pour tuer violemment le programme.

    Accessoirement ce bout de code fonctionne aussi bien sous windows que sous Linux.

    Les vrais naviguent en -42