Domanda

Ho creato una pipe e ho usato dup2 () per sovrascrivere stream 1 & amp; 2 (stdout & amp; stderr) in quei tubi.

Ora desidero usare fprintf per scrivere nello stream 1 o 2, ma il mio programma non sembra ricevere nulla dall'altra parte della pipe. Ho provato ad usare printf (), ma non sono sicuro che questo scriva su stdout o stream 1 per impostazione predefinita. Se scrive nello stream 1, immagino che sia un problema da qualche parte più in profondità nel mio codice.

Sostanzialmente sto chiedendo, dato un int che rappresenta lo stream, come posso ottenere un FILE * adatto all'uso in fprintf ()?

È stato utile?

Soluzione

Se si dispone di un descrittore di file e si desidera un FILE * , è possibile utilizzare fdopen

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

fdopen è una funzione Posix e documentato in man fdopen . Per fare il contrario puoi usare fileno

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top