我有一个写入FILE * cgiOut的程序,在写入流后,我需要派生并运行后台进程。麻烦的是,在fork之后,FILE *流似乎有时会刷新并且我得到重复的输出(在fork之后,所有打开的文件都被关闭,我猜这会导致刷新缓冲区)。我怎么能避免这个?我不想在主进程中关闭文件,因为它在库中打开,而且我认为它是一个套接字或管道。
答案 0 :(得分:5)
我不太清楚我理解您的问题,但是如果您想在cgiOut
之前确保fork()
缓冲区为空,则可以在fflush()
之前使用fork()
1}}。这应该强制刷新缓冲区。
通过setvbuf()
和朋友更改缓冲设置,可能适合使用无缓冲的流。这样你就不会(读:不应该)有任何缓冲问题,但它可能不是你想要的。
答案 1 :(得分:0)