2008-12-05 57 views
1

我有一个写入FILE * cgiOut的程序,并且在写入流之后,我需要fork并运行后台进程。麻烦的是,在fork之后,FILE *流有时会被刷新,并且我得到了重复的输出(在fork之后,所有打开的文件都被关闭了,我猜想会导致缓冲区被刷新)。我怎样才能避免这种情况?我不想在主进程中关闭该文件,因为它在库中打开,并且它是我认为的套接字或管道。如何在程序分叉时清除输出缓冲区?

回答

5

不太清楚我明白你的问题,但如果你想确保你的cgiOut缓冲区都在你面前空的,你可以只是你fork()之前的流使用fork()fflush()。这应该强制缓冲区被刷新。

它可能适合使用非缓冲流,通过更改缓冲设置通过setvbuf()和朋友。这样你不会(读:不应该)有任何缓冲问题,但它可能不是你想要的。