Comment puis-je utiliser fprintf et écrire dans un tuyau?

J’ai créé un tuyau et j’ai utilisé dup2 () pour écraser les stream 1 et 2 (stdout et stderr) dans ces tuyaux.

Maintenant, je souhaite utiliser fprintf pour écrire dans le stream 1 ou 2, mais mon programme ne semble rien recevoir de l’autre côté du tuyau. J’ai essayé d’utiliser printf (), mais je ne suis pas sûr si cela écrit sur stdout ou stream 1 par défaut. Si elle écrit dans le stream 1, je suppose que c’est un problème quelque part plus profondément dans mon code.

Essentiellement, je demande, étant donné un int représentant le stream, comment puis-je obtenir un FILE * utilisable dans fprintf ()?

Si vous avez un descripteur de fichier et souhaitez un FILE* , vous pouvez utiliser fdopen

 FILE *fdopen(int fd, const char *mode); 

fdopen est une fonction de Posix et documentée dans man fdopen . Pour faire l’inverse, vous pouvez utiliser fileno