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 61 62 63 64 65
| #include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/wait.h>
int main() {
int n,i=0, t[2];
char buffer [512];
for(i;i>4;i++)
{
/*creer le tube*/
if (pipe(t) == -1){
perror("pipe");
exit(1);
}
printf("Le tube %d\n",i);
/*dupliquer un processus*/
switch(fork()){
case -1:
{
printf("erreur\n");
exit(1);
}
case 0 : /*fils*/
/*fermer la sortie du tube*/
close (t[1]);
/* lecture du tube*/
while ((n=read(t[0],buffer,sizeof(buffer)))>0)
/*ecriture sur la sortie standard*/
write(1,buffer,n);
/*fermer la sortie du tube*/
close(t[0]);
exit(0);
default: /*le père*/
/*fermer la sortie du tube*/
close (t[0]);
/*lecture de l'entrée standard*/
while((n=read(1,buffer,sizeof(buffer)))>0)
/*ecriture dans le tube*/
write(t[1],buffer,n);
/*fermer l'entrée du tube*/
close(t[1]);
}
}
exit(EXIT_SUCCESS);
} |
Partager