• [^] # Re: revoir l'enoncé et choisir ce qui va bien

    Posté par . En réponse au message Communication entre deux processus pere-fils bloquante. Évalué à 1.

    Une solution à mon problème existe. La fonction popen, elle permet de créer un pipe entre deux fichiers et remplace les fonctions fork, execl, dup2, ...

    pere.cpp :

     int main()
    {
     char buf [10];
     FILE *pp;
     pp = popen("fils", "r");
     if (pp == NULL)
     {
     perror("popen");
     exit(1);
     }
     while (fgets(buf, sizeof(buf), pp))
     fputs(buf, stdout);
     pclose(pp);
    return 0;
    } 
    

    fils.c :

     int main()
    {
     fprintf(stdout,"coucou\n");
     fflush (stdout);
     return 0;
    } 
    

    On obtient bien coucou de la part du fils sur la sortie standard (console)!
    L’inconvénient c'est que je ne maitrise pas ce que je fais avec cette fonction.

    Je ne sais pas si passer par la sortie standard c'est très approprié ... ce n'est peut être pas très propre à la longue!
    Je vais chercher du côté des redirection de tube ou de la mémoire partagée pour deux processus afin de garder la déclaration du descripteur pour le fils une fois execl dans le père lancé.