Pergunta

Eu tenho um programa que grava em um arquivo * cgiOut e apenas depois de ter escrito para o fluxo, eu preciso garfo e executar um processo de fundo. O problema é que, após o garfo, o arquivo * stream parece expulsar, por vezes, e eu fico duplicado de saída (após a bifurcação, todos os arquivos abertos são fechados que eu acho que causas os buffers para ser liberado). Como posso evitar isso? Eu não quero para fechar o arquivo no processo mestre como ele é aberto em uma biblioteca e é um soquete ou tubo eu acho.

Foi útil?

Solução

Não é bem certo que eu entendi sua pergunta, mas se você quiser ter certeza de seus buffers cgiOut estão vazios antes de fork() você pode usar fflush() no fluxo imediatamente antes que você fork(). Isso deve forçar os buffers para ser liberado.

É talvez apropriado para usar um fluxo sem buffer, alterando as configurações de buffer através setvbuf() e amigos. Desta forma, você não vai. (Leia-se: não deve) ter quaisquer problemas de tamponamento, mas ele pode não ser o que você quer

Outras dicas

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