re-bonjour a tous
voila le code qui me pose problème.
alors je suis peut etre con mais je ne comprend pas pourquoi ca ne se passe pas comme je voudrait a savoir :
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); }
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 ???
Partager