1

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

4

2 回答 2

5

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

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

于 2008-12-05T06:43:46.647 回答
0

fflush(file)

于 2008-12-05T06:44:26.710 回答