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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 )