bonjour
mon probleme est le suivant ,je dois creer une communication entre un processus pere et k processus fils le pere doit communiquer avec chaque fils par un tube séparé mon code est le suivant
j ai pris au pif le tube 2 pour ecricre la valeur 5 qaund j essais de faire marcher la programme il tourne dans le vide meme si la compilation s est bien passé
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 int tab[k][2] ; for(i=0 ;i<k ;i++){ pipe(tab[i]); pid=fork(); if (pid==0){ close(tab[i][1]); for(j=0;j<k;j++){ if (j!=i){ close(tab[j][0]); } } } else { close(tab[i][0]); }} char comp[256]; int w=5; sprintf(comp,"%d",w); write(tab[2][1],comp,strlen(comp)+1);
alors que quand j evite de fermer tab[i][0] au niveau du pere ca marche
le probleme c est que je crois que les pipes ne sont pas bien branché avec les fils
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 int tab[k][2] ; for(i=0 ;i<k ;i++){ pipe(tab[i]); pid=fork(); if (pid==0){ close(tab[i][1]); for(j=0;j<k;j++){ if (j!=i){ close(tab[j][0]); } } } else { //close(tab[i][0]); }} char comp[256]; int w=5; sprintf(comp,"%d",w); write(tab[2][1],comp,strlen(comp)+1);
et que quand ca plante c est que pq le au niveau de l ecriture dans le tube il ne voit que la sortie du pere sans voir celles des fils
Merci
Partager