re-bonjour a tous
voila le code qui me pose problème.

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
 
 void error (char *msg) {
  fprintf(stderr,"%s",msg);
  exit(-1);
}
 
void gereUSR1 ( int signo )
{printf("le pere %d redémarre",getpid());
}
 
 void bodyFils()
 {
 
 printf("je suis %d pendant 10s et j'envoie un signal a mon pere",getpid());
 sleep (5);	
 kill(getppid(),SIGUSR1); 
 
 
 }
 
 
 void bodyPere()
 {
 printf("j'attend un signal de mon fils");
 pause();
 printf("je suis %d j'ai recu un signal de mon fils",getpid());
 exit(0); 
 }
 
 
int main(void) 
{ 
signal (SIGUSR1,gereUSR1);
switch(fork()) {
 
  case -1 : 
    error("Erreur de création du fork\n");
    break;
 
  case 0 : // Je suis le fils
    bodyFils();
	exit(0);
    break;
  }
 
  /* Je suis forcemment le père */
  bodyPere();
  while (wait(0) != -1);
}
alors je suis peut etre con mais je ne comprend pas pourquoi ca ne se passe pas comme je voudrait a savoir :
je suis 3124 pendant 10s et j'envoie un signal a mon pere
attente de 5s
j'attend un signal de mon fils
le pere 3396 redémarre je suis 3396
j'ai recu un signal de mon fils

la ca me fait une attente de 5 seconde puis je recupere mes printfs d'un coup ???