next up previous contents
Next: Quiz Up: Mise en place des Previous: Fonctions pause et alarm   Contents

Exemples de programmation des signaux

Dans l'exemple ci-dessous, le programme intercepte le signal SIGINT généré par la touche DEL.

[linewidth=1pt,fillstyle=solid,shadow=true](-0.5,0)(17.5,-6.5)


#include <signal.h>

void spint(int sig)
{
   printf("Recu signal d'interruption %d\n",sig);
}

void main()
{
   signal(SIGINT,spint);
   pause();
   exit(0);
}



Dans l'exemple suivant, le processus crée un fils, lui envoie un signal et attend sa fin. Le fils met en place le traitement du signal et se met en attente. Le père fait un sleep pour garantir la mise en place du fils et du traitement du signal.

[linewidth=1pt,fillstyle=solid,shadow=true](-0.5,0)(17.5,-10)


#include <stdio.h>

void spsig(int sig)
{ printf("Signal %d recu\n",sig); }
void main()
{
   int idfils, status;

   if (idfils=fork())   {   /* pere */
      sleep(5);
      kill(idfils,SIGUSR1);
      wait(&status);
      exit(0);
   }
   else   {   /* fils */
      signal(SIGUSR1,spig);
      pause();
      exit(1);
   }
}



Arnaud Revel
2001-11-26