bonsoir,

un processus père crée trois fils : thermomètre , baromètre , voltmètre
aprés un délai de garde de 5 sec , un signal est envoyé , la procedure "reveil" se déclenche pour réveiller les trois fils qui effectue un prélèvement :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
reveil()
{
kill(pidTher ,SIGUSR1);
kill(pidBaro ,SIGUSR1);
kill(pidVolt ,SIGUSR1);
 
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
//********************************* le handler du fils thermomètre 
 
int handTherm()
 
printf (" je suis le fils Thermomètre %d mon père : %d \n" , getpid() , getppid());
exit(20+random()%30);
//*******************************************************************
exemple de création de fils :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
Thermomètre = fork();
if (Thermomètre == -1)
 
{
  perror ("erreur de création de Thermomètre");
  exit(-1);
}
             else  if (Thermomètre==0)
                              // éxécution du fils Thermomètre
                              {
                               signal (SIGUSR1, handTherm);
                               pidTher = Thermomètre;
                               pause();
 
                               }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
signal(SIGALRM,reveil);
alarm(5000);
je ne sais pas si c'est comme ça qu'on réveille les fils !!!!
est ce la bonne synchronisation ??

merci d'avance pour vos réponses