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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
int tube[3][2];
void lecture(int n)
{
char buf[6];
printf("%d-1\n",n);
close(tube[n][1]);
printf("%d-2\n",n);
read(tube[n][0], &buf, 6*sizeof(char));
printf("%d-3\n",n);
printf("buffer fils %d : %s\n",n ,buf);
}
int main(void)
{
int i;
pid_t pid[3];
/* Initialisation des tubes */
pipe(tube[0]);
pipe(tube[1]);
pipe(tube[2]);
if(fork() == 0)
{
/* Nous sommes dans le fils 0 */
lecture(0);
exit(0);
}
else
{
/* Nous sommes dans le père */
char buffer[6];
close(tube[0][0]);
sprintf(buffer,"%d",0);
printf("buffer père 0 : %s\n", buffer);
write(tube[0][1], &buffer, 6*sizeof(char));
wait();
}
if(fork() == 0)
{
/* Nous sommes dans le fils 1 */
lecture(1);
exit(0);
}
else
{
/* Nous sommes dans le père */
char buffer[6];
close(tube[1][0]);
sprintf(buffer,"%d",1);
printf("buffer père 1 : %s\n", buffer);
write(tube[1][1],&buffer,6*sizeof(char));
wait();
}
if(fork() == 0)
{
/* Nous sommes dans le fils 2 */
lecture(2);
exit(0);
}
else
{
/* Nous sommes dans le père */
char buffer[6];
close(tube[2][0]);
sprintf(buffer,"%d",2);
printf("buffer père 2 : %s\n", buffer);
write(tube[2][1],&buffer,6*sizeof(char));
wait();
}
} |
Partager