Utilisation de tubes dans des fork
Bonjour,
je viens de me lancer dans l'utilisation de tubes, mais il me manque de la doc.
Quelqu' un connaît-il un tuto à ce sujet ?
J'ai codé un petit programme pour tester, mais il ne marche pas comme je le souhaite.
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
|
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int tube[2];
char buffer[100];
char tmp[100];
int i;
pid_t pid[5];
pipe(tube);
for(i=0;i<5;i++)
{
pid[i]=fork();
switch (pid[i])
{
case -1 : perror("fork");
exit(1);
case 0 : close(tube[0]);
sprintf(tmp,"je suis le fils n° %d\n",i);
write(tube[1],tmp,strlen(tmp)+1);
close(tube[1]);
exit(0);
default : close(tube[1]);
read(tube[0],buffer,sizeof(buffer));
printf("chaine lue de %d : %s \n",i,buffer);
bzero(buffer,sizeof(buffer));
close(tube[0]);
}
}
return 0;
} |
Il me renvoie :
Code:
1 2 3 4 5 6 7
|
chaine lue de 0 : je suis le fils n° 0
chaine lue de 1 :
chaine lue de 2 :
chaine lue de 3 :
chaine lue de 4 : |
Je ne comprends pas vraiment, faudrait-il que je prenne un tableau de 6 tubes dans mon cas ?
et puis écrire dans tube[i+1] dans le fils ? ( j'ai essayé, mais ça ne marche pas non plus, mais peut-être je m'y suis mal pris )