Como você limpar buffers de saída quando os garfos do programa?
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.
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