Yokooo Posté(e) le 14 mars 2007 Partager Posté(e) le 14 mars 2007 bonjour, je viens de créer un programme en c concernant les pipes sous linux. A partir d'une mère je crée 2 filles. la 1ère fille lis le mot écris par la mère et ensuite celle-ci écris à son tour pour que la 2ème fille puisse lire. voila le programme : #define _GNU_SOURCE #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <string.h> #include <errno.h> #include <unistd.h> int main (void) { pid_t fille1,fille2; char messagea[] = "Reception fille 1"; char messageb[] = "Reception fille 2"; char message1[sizeof(messagea)]; char message2[sizeof(messageb)]; int i,j; int pd1[2]; int pd2[2]; int word1, word2, word3,word4; i = pipe(pd1); j = pipe(pd2); fille1 = fork (); fille2 = fork (); // Envoi de la mère à la fille 1 if (fille1 > 0 && fille2 > 0) { if (i == 0) { int word1 = write(pd1[1],messagea,sizeof(messagea)); } else { printf("Non Recpetion fille 1\n"); } } else { // Reception fille 1 et écriture à la fille 2 if (fille1 == 0) { word2 = read(pd1[0],message1,sizeof(message1)); printf("%s \n",message1); if (j == 0) { int word3 = write(pd2[1],messageb,sizeof(messageb)); } else { printf("Non Recpetion fille 2\n"); } } else // Reception fille 2 if (fille2 == 0) { word4 = read(pd2[0],message2,sizeof(message2)); printf("%s \n",message2); } else { return(0); } } } Maintenant ce que j'aimerais, se serait que dès que la mère écris dans le mot seulement la fille 1 puisse lire (donc en endormant la fille 2) et que dès que la fille 1 l'a lu 5 fois, la fille 2 se réveille et le lis. Pourriez vous me dire ce qu'il faut rajouter s'il vous plait ? Il ne doit pas y avoir beaucoup de modifications mais je n'y arrive pas. Merci beaucoup. Geoffrey Lien vers le commentaire Partager sur d’autres sites More sharing options...
16ar Posté(e) le 19 mars 2007 Partager Posté(e) le 19 mars 2007 Je ne m'y connais pas, donc je ne donnerais aucun conseil a part : Utilise les balises CODE pour ton code Lien vers le commentaire Partager sur d’autres sites More sharing options...
Gnaphron Posté(e) le 19 mars 2007 Partager Posté(e) le 19 mars 2007 Je dirais : utilises des semaphores pour savoir qui doit répondre. Je te laisse un peu chercher sur comment ça marche. Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 21 mars 2007 Partager Posté(e) le 21 mars 2007 tu peux aussi faire une synchro par signaux Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 29 mars 2007 Partager Posté(e) le 29 mars 2007 fork() wait() exit() (oui, je sais, c'est moche pour ce que c'est, mais, il pourra adapter sur des commandes) et au fait... comment tu fais des pipes sans dup/dup2 ? un ptit tour sur le man bonne chance Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.