#include #include #include #include #include void InterruptionSignal(int); struct sigaction Detournement; void main(void) { Detournement.sa_handler=InterruptionSignal; Detournement.sa_flags=0; sigaction(SIGHUP,&Detournement,NULL); sigaction(SIGTSTP,&Detournement,NULL); sigaction(SIGCONT,&Detournement,NULL); sigaction(SIGINT,&Detournement,NULL); sigaction(SIGTERM,&Detournement,NULL); while(1) { printf("[processus %04d] Je n'arrête pas de parler intérrompez-moi\n",getpid()); sleep(1); } } void InterruptionSignal(int signal) { switch(signal) { case SIGINT: printf("\b\b"); printf("Pas question de m'arrêter !!\n"); break; case SIGTSTP: printf("J'ai été arrêté...mais pour un moment seulement !!\n"); pause(); break; case SIGCONT: printf("Je continues...comme Kevin, Alex, Thibault, David et Jérôme...\n"); break; case SIGTERM: printf("Raté !! Gnerk !! Gnerk !!\n"); break; case SIGHUP: printf("Ah ! Là je m'arrête !!\n"); //fflush(stdout); tcflush(0,TCOFLUSH); exit(0); } fflush(stdout); }