Dev*_*lar 13
如果库实现可以确定输出流不引用交互设备(并且只有那时),则流将被完全缓冲,即当缓冲区(默认BUFSIZ
大小)已满时将刷新它.
如果没有完全缓冲,则可以对行进行行缓冲,即在'\n'
写入(或缓冲区已满,如果您的行非常长)或无缓冲时将刷新它.
(ISO/IEC 9899:1999,第7.19.5.3章" fopen()
功能",第7段.手头没有更新版本的标准,但AFAIK没有改变.)
什么构成"交互设备"是实现定义的.(第5.1.2.3章"程序执行",第6节.)
一般的想法是文件输出应该是完全缓冲的,而终端输出是行缓冲的(或者是无缓冲的,正如Jesse Good正确指出的那样).
缓冲策略和缓冲区大小都可以通过更改setvbuf()
.请注意,任何此类更改必须在您开始访问流之前发生,一旦您考虑它就会显而易见.
归档时间: |
|
查看次数: |
701 次 |
最近记录: |