Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个写入 FILE *cgiOut 的程序,在它写入流之后,我需要分叉并运行一个后台进程。问题是,在 fork 之后,FILE * 流似乎有时会被刷新,并且我得到重复的输出(在 fork 之后,所有打开的文件都被关闭,我猜这会导致缓冲区被刷新)。我怎样才能避免这种情况?我不想关闭主进程中的文件,因为它是在库中打开的,我认为它是一个套接字或管道。
不太确定我理解你的问题,但是如果你想确保你的cgiOut缓冲区是空的,然后你fork()可以在你fflush()之前的流上使用fork()。这应该强制刷新缓冲区。
cgiOut
fork()
fflush()
通过setvbuf()和朋友更改缓冲设置,可能适合使用无缓冲流。这样你就不会(阅读:不应该)有任何缓冲问题,但它可能不是你想要的。
setvbuf()
fflush(file)