Programmation Avancée en C


signaux.c

00001 #include <signal.h>
00002 #include <stdio.h>
00003 #include <stdlib.h>
00004 
00005 sig_atomic_t quit = 0;
00006 
00007 static void signalsortie(int n) {
00008         quit = 1;
00009 }
00010 
00011 int main()
00012 {
00013         sigset_t mask;
00014         struct sigaction gestionnaire;
00015 
00016         gestionnaire.sa_handler = signalsortie;
00017         gestionnaire.sa_flags = 0;
00018 
00019         if (sigemptyset(&mask))  return EXIT_FAILURE;
00020         if (sigaction(SIGTERM, &gestionnaire, NULL))
00021                 return EXIT_FAILURE;
00022 
00023         while(!quit) { /* "tant que l'on ne reçoit pas de SIGTERM" */
00024                 /* opération à faire */
00025         }
00026         printf("sortie propre de la boucle\n");
00027         return 0;
00028 }