当前位置:  开发笔记 > 后端 > 正文

程序分叉时如何清除输出缓冲区?

如何解决《程序分叉时如何清除输出缓冲区?》经验,为你挑选了1个好方法。

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



1> freespace..:

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

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

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有