是否有相当于C的堵塞?

时间:2014-06-10 08:31:24

标签: c

我知道C ++也是如此:

         buffering  output

cerr:    unbuffered stderr
clog:    buffered   stderr
cout:    buffered   stdout

cerrcout的C等价物:

cerr:    fprintf(stderr, ...)
cout:    fprintf(stdout, ...) or printf(...)

是否有clog的等效内容?

2 个答案:

答案 0 :(得分:2)

是的,使用setvbuf和完全缓冲(_IOFBF):

  

完全缓冲:在输出时,一旦缓冲区满了就写入数据(或   酡)。在输入时,缓冲区在输入操作时被填充   请求,缓冲区为空。

#include <stdio.h>

int main(void)
{
    char buff[BUFSIZ];

    setvbuf(stderr, buff, _IOFBF, BUFSIZ);
    fprintf(stderr, "Hello world\n");
    getchar();
    fflush(stderr);
    return 0;
}
  

在每个系统上选择BUFSIZ的值以便进行流I / O.   高效。因此,最好使用BUFSIZ作为大小   调用setvbuf时缓冲。

答案 1 :(得分:1)

不,C只有stderrstdout以及标准输出流。但您可以stderr随意设置setvbuf上的缓冲。