2009-03-16 13 views
7

Creé una tubería y utilicé dup2() para sobrescribir las corrientes 1 & 2 (stdout & stderr) en esas tuberías.¿Cómo puedo usar fprintf y escribir en una tubería?

Ahora deseo usar fprintf para escribir en la secuencia 1 o 2, pero mi programa no parece estar recibiendo nada en el otro lado de la tubería. He intentado usar printf(), pero no estoy seguro si esto escribe en stdout o stream 1 de forma predeterminada. Si escribe en la secuencia 1, creo que es un problema más profundo en mi código.

Esencialmente estoy preguntando, dado un int que representa la secuencia, ¿cómo puedo obtener un archivo * adecuado para su uso en fprintf()?

Respuesta

6

Si usted tiene un descriptor de archivo y desea una FILE*, puede utilizar fdopen

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

fdopen es una función POSIX y documentado en man fdopen. Para hacer lo contrario, puede usar fileno

+0

¿Cierra el descriptor, el puntero ARCHIVO, cualquiera, o ambos? – Bernard

+0

El descriptor de archivo permanece abierto hasta que cierre la secuencia, momento en el que cerrará el descriptor de archivo de acuerdo con la página de manual. –

Cuestiones relacionadas