#define _POSIX_C_SOURCE 200112L #include #include #include #include /*----------------------------------------------------------------. | Sans volatile et avec une compilation optimisée (comme gcc -O), | | le compilateur peut remplacer la boucle en fin de fichier par | | | | while(true) ; | | | | ce qui empêche le handler de faire sortir de la boucle. | `----------------------------------------------------------------*/ volatile int i; void f(int s) { i = 1; } int main(int argc, char **argv) { struct sigaction a; a.sa_handler = f; sigemptyset(&a.sa_mask); a.sa_flags = 0; // SIGINT est généré lorsqu'on tape Ctrl-C sous le shell. sigaction(SIGINT, &a, NULL); while(!i) ; }