使用setvbuf()
,我们可以将FILE*
流的缓冲区类型更改为以下之一:
_IONBF
(无缓冲)_IOLBF
(行缓冲)_IOFBF
(已完全缓冲)例如,为了将stderr
设置为行缓冲,我们可以执行以下操作:
setvbuf(stderr, NULL, _IOLBF, 0);
还有一种方法可以找出给定输出流的当前缓冲区类型(使用文件描述符或FILE指针)?
不可能。没有确定打开的FILE
的当前缓冲特性的标准方法。
[GNU C库中有Solaris引入的非标准函数,GNU C库中的__flbf
function中有__flbf
,在流被行缓冲的情况下返回非零值。
在检查了stdio_ext.h
之后,您不应该使用的以下程序似乎在使用GNU libc 2.31的平台上可以运行:
glibc sources libio/iosetvbuf.c