Bonjour, petit projet pendant les vacances (comme mon camarade du dessous ).

Je bute sur une étape où je dois faire communiquer plusieurs programme.
Voila ce que je veux faire.

Avec mon lanceur, j'ouvre un tube nommé dans lequel j'écris un message, j’exécute mon programme numéro 2 avec execv dans lequel je lis ce qu'il y a dans le tube exécute quelques opérations (pas de problème de ce coté la), et réécris le message à la fin dans ce même tube.

Mon problème arrive lorsque je lance le tube sur le lanceur, il semble attendre quelque chose et n'exécute pas ma commande execv, il n'affiche pas non plus le printf "test".
Voila le code "lanceur":

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
int main(int argc, char **argv){
	int fd,tube,resWrite;
	char message[256];
	strcpy(message,argv[1]);
	printf("\n message => %s\n",message);
	char *arguments[] = {"petale","4",NULL};
	// creation du tube et envoie du premier message
	printf("test");
	//mkfifo("tube",0777);
 
	if((tube = open("tube",O_WRONLY)) == -1){
			printf("erreur erno => %d",errno);
			exit(1);
	}
	if((resWrite = write(tube,message,256)) == -1){
			printf("erreur write errno=> %d",errno);		
			exit(1);
	}
	execv("petale",arguments);			
}
Voici ce que j'ai de l'autre coté:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
int main(int argc, char **argv){
	int n,fd;
	int nbFils = atoi(argv[1]);
	char * msg = (char *)malloc(sizeof(char)*256);
 
	//LECTURE DANS LE TUBE
 	if((fd = open("tube",O_RDONLY)) == -1){
	}
	read(fd,msg,TAILLE_MESSAGE);
 
	//le tube est cree au debut de la premiere petale ensuite chaque petale y accede
	creerPetale2(msg,nbFils);
}
J'ai réussi à faire tout de même un programme simple avec mkfifo ou j'ai une partie écrivain et lecteur, il y a quelque chose que je ne dois pas comprendre avec cette fonction...