• [^] # Re: Impossible

    Posté par . En réponse au message Communication entre processus avec pipe() et dup2().. Évalué à 4.

    Bonjour, ça fonctionne avec un PTY.

    C'est étudié pour ;)

    Plusieurs remarques,

    • Si vous utilisez fopen, répondez par fclose, il est peu probable que vos close(f) soient valides. Un stream et un descripteur de fichier sont deux choses différentes.

    • Puisque vous allouez dynamiquement le buffer, faites le uniquement dans le processus père. Sinon, le processus fils va hériter d'une copie.

    • De même pour les bashargs, dans le fils.

    • Pour moi, vous lancez toujours un bash ... qui lance un autre bash (vérifiez avec ps).

    • Sortez du while tout ce qui ne doit être fait qu'une fois (le timeout).

    • Pas besoin du else, soit execve remplace complètement le processus, soit il échoue:

     execve(..);
     perror("marche po\n");
     exit(EXIT_FAILURE);
    • si vous voulez voir quelque chose dans votre fichier,
      faites des fflush.

    • Maintenant que vous avez tout écrit à la main, vous pouvez lire le manuel de forkpty
      voire les sources.

    • et utiliser un poll ou un epoll.


    C'est con tous ces #define _XOPEN_SOURCE et autres, hein.
    Pour éviter ce bordel, passez sous FreeBSD.