Question

J'ai créé un tuyau et j'ai utilisé dup2 () pour écraser les flux 1 & amp; 2 (stdout & stderr) dans ces tuyaux.

Maintenant, je souhaite utiliser fprintf pour écrire dans le flux 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 sais pas si cela écrit sur stdout ou stream 1 par défaut. S'il écrit dans le flux 1, je suppose que c'est un problème quelque part plus profondément dans mon code.

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

Était-ce utile?

La solution

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 Posix et documenté dans man fdopen . Pour faire l'inverse, vous pouvez utiliser fileno

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top