création de plusieurs processus fils
bonjour,
il s'agit de créer 3 processus fils :
f1 : retourne la valeur 5
f2 : retourne la valeur 10
f3 : retourne la valeur 3
le processus père attend le retour de ses trois fils pour réaliser le calcul
3*10+5
voici mon programme :
Code:
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 54 55 56 57 58 59 60
|
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include <sys/wait.h>
int main()
{
int f1,f2,f3;
printf ("je suis le père :%d\n", getpid());
f1 = fork();
switch ( f1 ) {
case -1 :
printf ("erreur dans la création du processus");
break;
case 0 :
printf ("je suis le fils1 , mon pid est: %d \n", getpid());
return(5);
break;
default :f2 = fork();
switch ( f2 ) {
case -1 :
printf ("erreur dans la création du processus");
break;
case 0 :
printf ("je suis le fils2 , mon pid est: %d \n", getpid());
return(10);
break;
default :f3 = fork();
switch ( f3 ) {
case -1 :
printf ("erreur dans la création du processus");
break;
case 0 :
printf ("je suis le fils3 , mon pid est: %d \n", getpid());
return(3);
break;
default :
printf ("c'est toujours le père en fin de traitement\n");
waitpid(f1, NULL, 0);
waitpid(f2, NULL, 0);
waitpid(f3, NULL, 0);
}
}
}
} |
et voilà ce qui est affiché aprés l'éxécution :
je suis le père :4394
je suis le fils1 , mon pid est: 4395
je suis le fils2 , mon pid est: 4396
c'est toujours le père en fin de traitement
je suis le fils3 , mon pid est: 4397
l'avant dernière ligne , le père s'éxécute avant son 3 ième fils !!!!!!!!! je m'en sors pas trés bien avec les imbrications des switch :?
waitpid ne s'éxécute pas !!!
comment récupérer les valeurs 5 , 10 , 3 ?
une idée merci de partager
cordialemnt