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