我有一个程序,它将写入到FILE * cgiOut流中,正好在它写入到流之后,我需要分叉和运行后台进程。问题在于,在分叉后,FILE *流有时似乎会刷新,导致输出重复(在分叉后,所有打开的文件都关闭,这会导致缓冲区被刷新)。我该怎么避免这种情况?我不想在主进程中关闭文件,因为它是在库中打开的,而且我认为它是一个套接字或管道。
程序分叉时如何清除输出缓冲区?
原标题:
最佳回答
我不太确定我理解你的问题,但如果你想在执行fork()
之前确保cgiOut
缓冲区为空,你可以在fork()
之前使用fflush()
将流刷新。这样应该可以强制刷新缓冲区。
也许可以通过通过 setvbuf()
和相关的函数来改变缓冲设置,使用无缓冲流可能更适合。这样你就不会(应该不会)遇到任何缓冲问题,但这可能不是你想要的。
问题回答
fflush(file)
的中文翻译为:刷新(file)。
相关问题
热门标签
- winforms
- combobox
- fogbugz
- java
- date
- internationalization
- asp.net
- iis
- url-rewriting
- urlrewriter
- c#
- enums
- ocaml
- haxe
- algorithm
- string
- viewstate
- .net
- c++
- c
- symbol-table
- mysql
- database
- postgresql
- licensing
- migration
- vb.net
- vb6
- declaration
- vb6-migration
- python
- psycopg2
- backup
- vmware
- virtualization
- gnu-screen
- authentication
- desktop
- excel
- xll
- cultureinfo
- regioninfo
- oracle
- client
- session
- download
- html
- virtual
- constructor
- scenarios
- perl
- full-text-search
- javascript
- ajax
- testing
- oop
- inheritance
- vim
- encapsulation
- information-hiding