代码之家  ›  专栏  ›  技术社区  ›  raldi

c等于autoflush(每次写入后刷新stdout)?

  •  28
  • raldi  · 技术社区  · 16 年前

    在Perl中,我可以键入:

    $|++;
    

    任何打印到stdout的内容都将自动fflush()ed。

    C中是否有等价物?换句话说,有没有什么方法可以告诉stdio在每次printf()之后自动刷新stdout,它自动刷新stderr的方式?

    3 回复  |  直到 13 年前
        1
  •  39
  •   Harry    16 年前

    尝试 setvbuf(stdout, NULL, _IONBF, 0) . 它改变 stdout 未缓冲的(未缓冲的) _IONBF )模式。

        2
  •  13
  •   yogman    16 年前

    我没有这样做,但是iolbf是正确的答案。

    百万美元

    名字
    setvbuf-将缓冲分配给流

    简介
    #包括<stdio.h>

       int setvbuf(FILE *restrict stream, char *restrict buf, int type,
              size_t size);
    

    描述
    setvbuf()函数可以在流指向的流与打开的文件关联之后,但在对 溪流。参数类型决定如何缓冲流,如下所示:

        * {_IOFBF} shall cause input/output to be fully buffered.
    
        * {_IOLBF} shall cause input/output to be line buffered.
    
        * {_IONBF} shall cause input/output to be unbuffered.
    
        3
  •  6
  •   CesarB    16 年前

    查看setbuf()和setvbuf()。