如何检查输出流的缓冲区类型?

问题描述 投票:4回答:1

使用setvbuf(),我们可以将FILE*流的缓冲区类型更改为以下之一:

  • _IONBF(无缓冲)
  • _IOLBF(行缓冲)
  • _IOFBF(已完全缓冲)

例如,为了将stderr设置为行缓冲,我们可以执行以下操作:

setvbuf(stderr, NULL, _IOLBF, 0);

还有一种方法可以找出给定输出流的当前缓冲区类型(使用文件描述符或FILE指针)?

c linux
1个回答
0
投票

不可能。没有确定打开的FILE的当前缓冲特性的标准方法。

[GNU C库中有Solaris引入的非标准函数,GNU C库中的__flbf function中有__flbf,在流被行缓冲的情况下返回非零值。

在检查了stdio_ext.h之后,您不应该使用的以下程序似乎在使用GNU libc 2.31的平台上可以运行:

glibc sources libio/iosetvbuf.c
© www.soinside.com 2019 - 2024. All rights reserved.