Bonjour, j'ai un problème au sujet d'une fonction qui appelle un processus...
La fonction main() appelle la fonction rec() qui crée 2 processus fils, chacun retournant 1. Le
processus père se charge d'additionner les deux valeur de retour de ses fils et de renvoyer cette valeure. Seulement, dans ce cas le programme affiche 0. Dans le cas ou il n'y a pas de fonction rec(), c-a-d que tous le code se fait dans la fonction main(), le programme affiche bien 2. Pouquoi?
Code rec.c : 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 #include <stdio.h> #include <stdlib.h> #include <sys/wait.h> #include <unistd.h> #include <time.h> int rec(void); int main(void) { rec(); return 0; } int rec(void) { int n; n = 1; pid_t pid[2]; pid[0]=fork(); if(pid[0]==0){ if(n==1){ return 1; } } pid[1]=fork(); if(pid[1]==0){ if(n==1){ return 1; } } int a,b; waitpid(pid[0],&a,0); waitpid(pid[1],&b,0); printf("%d\n",WEXITSTATUS(a)+WEXITSTATUS(b)); return WEXITSTATUS(a)+WEXITSTATUS(b); }
Partager