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
|
int fd[2];
pipe(fd);
int pid;
if(fork()==0){
execlp("prog1","prog1",NULL);
}else{
if((pid=fork())==0){
close(fd[0]);
dup2(fd[1],1);
execlp("prog2","prog2",a,b,NULL);
}else{
waitpid(pid) // le père s'assure que le fils a fini avec prog2
if((pid=fork())==0){
close(fd[1]);
dup2(fd[0],0);
execlp("prog3","prog3",NULL);
}else{
waitpid(pid) // le père s'assure que le fils a fini avec prog3 pour envoyer le resultat dans truc
fd=open("truc",O_RDONLY,0);
dup2(fd,1); /// c'est pas top clair dans ma tête en fait cette partie
}
}
}
wait() // on s'assure que tout est fini et on lance la commande prog4<truc
fd=open("truc",O_RDONLY,0);
dup2(fd,0);
close(fd);
execlp("prog4","prog4",NULL); |
Partager