Communication entre pere et fils , processus

na7lae -  
 na7lae -
Bonjour,
on nous a demander de créer un processus qui communique avec son fils par pipes. Il envoie par pipe des messages au fils qui les affiche sur écran. le père doit attendre son fils.
j'ai tapé un code mais ça ne m'affiche rien ( juste 3 points d'interrogation ):

1 #include<unistd.h>
2 #include<stdlib.h>
3 #include<stdio.h>
4 #define TAILLE 10
5 main()
6 { char systeme[TAILLE];
7 int p[2], i;
8 char *systeme1= "Unix";
9 char *systeme2= "VMS";
10 char *systeme3= "Windows";
11
12 int x;
13 x=fork();
14 if(x<0)
15 { printf(" erreur");
16 }
17 if (pipe(p)<0)
18 {
19 printf(" erreur d'ouverture du pipe!");
20 exit(1);
21 }
22
23 if(x>0)
24 { /*ferme en lecture*/
25 close(p[0]);
26
27 /*ecriture dans le pipe*/
28 write(p[1] ,systeme1, TAILLE);
29 write(p[1], systeme2, TAILLE);
30 write(p[1], systeme3, TAILLE);
31 wait(NULL);
32 }
33 else
34 close(p[1]);
35 /*lecture du pipe*/
36 for(i=0; i<3; i++)
37 { read(p[0], systeme, TAILLE);
38 printf("%s\n" ,systeme);
39 }
40 exit(0);
1,1 Haut
quel est le problème??

1 réponse

titus22 Messages postés 2352 Statut Membre 641
 
Dans le père
X aura la valeur du pid du fils
dans le fils
X aura une valeur aleatoire en mémoire car tu n'initialise pas cette variable.

Je serais toi je metterais un :
int ppid= getpid();

int x=fork();

if(getpid()==ppid){ // je suis dans le père
// code du père
}
else { // je suis dans le fils
// Code du fils
}
;)
" Votre temps est limité, ne le gâchez pas en menant une existence qui n'est pas la vôtre. " S.Jobs
0
na7lae
 
merci :)
0