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

有帮助吗?

解决方案

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

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

其他提示

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top