English 中文(简体)
程序分叉时如何清除输出缓冲区?
原标题:
  • 时间:2008-12-05 06:15:50
  •  标签:

我有一个程序,它将写入到FILE * cgiOut流中,正好在它写入到流之后,我需要分叉和运行后台进程。问题在于,在分叉后,FILE *流有时似乎会刷新,导致输出重复(在分叉后,所有打开的文件都关闭,这会导致缓冲区被刷新)。我该怎么避免这种情况?我不想在主进程中关闭文件,因为它是在库中打开的,而且我认为它是一个套接字或管道。

最佳回答

我不太确定我理解你的问题,但如果你想在执行fork()之前确保cgiOut缓冲区为空,你可以在fork()之前使用fflush()将流刷新。这样应该可以强制刷新缓冲区。

也许可以通过通过 setvbuf() 和相关的函数来改变缓冲设置,使用无缓冲流可能更适合。这样你就不会(应该不会)遇到任何缓冲问题,但这可能不是你想要的。

问题回答

fflush(file) 的中文翻译为:刷新(file)。





相关问题
热门标签