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":
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
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); }
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...
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); }
Partager