Pergunta

Criei um tubo e usei Dup2 () para substituir os fluxos 1 e 2 (stdout & stderr) nesses tubos.

Agora, desejo usar o FPRINTF para escrever para transmitir 1 ou 2, mas meu programa não parece estar recebendo nada do outro lado do tubo. Tentei usar o printf (), mas não tenho certeza se isso grava no Stdout ou Stream 1 por padrão. Se gravar para transmitir 1, acho que é um problema em algum lugar mais profundo no meu código.

Essencialmente, estou perguntando, dada uma int representando o fluxo, como posso obter um arquivo* adequado para uso em fprintf ()?

Foi útil?

Solução

Se você tem um descritor de arquivo e deseja um FILE*, você pode usar fdopen

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

fdopen é uma função POSIX e documentada em man fdopen. Para fazer o inverso que você pode usar fileno

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top