当前位置:  技术问答>linux和unix

fflush() 和 setvbuf() 的问题。

    来源: 互联网  发布时间:2016-12-17

    本文导语:  #include   #include  #include int main(int argc, char *argv[]) {     int i = 0;     char c;     if(setvbuf(stdin, NULL, _IOLBF, 4 * sizeof(int)))     {         puts("Buffer error!n");         exit(1);     }     while(1)     {     ...

#include  
#include 
#include

int main(int argc, char *argv[])
{
    int i = 0;
    char c;

    if(setvbuf(stdin, NULL, _IOLBF, 4 * sizeof(int)))
    {
        puts("Buffer error!n");
        exit(1);
    }
    while(1)
    {
        sleep(1);   //我用setvbuf()设置绶存大小为4个int型的。。为什么这个程序不是像我设置的那样去输出
                  //呢。为什么不是每次输出4个数??
        printf("%d", i);
      //  fflush(stdout);
        i++;
    }
    return 0;
}

|
别研究这个事情了,翻glibc源码没用,各个平台的实现可能不一样,实际项目也用不到这种东西

|
man setvbuf 里面有这么一句: If the argument buf is NULL, only the mode is affected
所以我觉得,如果要控制buffer的大小,可能就不能用NULL
我这样试了一下:
    char buf[100];
    if(setvbuf(stdout, buf, _IOLBF, 4 * sizeof(int)))
结果i到了10以上之后,每次输出9个数也就是18个字符,不是16个,不明白为什么。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 基于C语言fflush()函数的使用详解
  • sync()、fflush()、fsync()这3个函数有什么区别?
  • how to use fflush(FILE *stream)
  • 在linux中c语言中fflush(stdout)是什么意思,能不能具体解释一下
  • 基于c中使用ftruncate()前需要fflush(),使用后需要rewind()的深入探讨


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3