Aller au contenu

[Linux] Problèmes de pipes()


Yokooo

Messages recommandés

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...