zoukankan      html  css  js  c++  java
  • Linux输出缓存你知道多大吗?

    今天看到这个代码很简单,就是验证一下Linux系统的输出缓存大小。当

    猜一下这个代码的输出:

    #include <stdio.h>
    #include <string.h>
    #include <errno.h>
    #define N 1025
    int 
    main(int argc, char **argv)
    {
        char ch;
        int count = 0;
        char buf[N];
    
        memset(buf, 'a', N);
    
        buf[N-2] = 'b';
        buf[N-1] = 'c';
    
        fputs(buf,stdout);
        //printf("%s",buf);  //备用测试
        //fflush(fp);        //刷新缓存到输出
    
        return 0;
    }
    

    既然代码这样写了,我们猜想肯定不会完全输出了,运行结果是:

    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    aaaaaaaaaaaaaaaaaaaaaab
    

    这个结果的原因是,当缓冲区达到最大时就会自动输出,在此程序中c没有输出,是因为缓存只有1024字节,c在前1024外,所以再不刷新缓存的情况下,c是不会输出的。

    printf的输出结果和fputs一样,printf输出里如果加一个换行‘ ’也是可以输出的(这一点在调试时有时会遇到,printf打印的输出没有输出出来,有可能就是忘了加换行了)。fflush(fp); 函数会把缓存的数据刷新到输出。

  • 相关阅读:
    C语言的选择结构和条件判断
    学习C语言必须知道的理论知识(第三章数据类型的分类)
    基本输入输出函数以及其格式.
    学习C语言必须知道的理论知识(第三章常量和变量)
    简单的算术题。
    学习C语言必须知道的理论知识(第二章算法)
    学习C语言必须知道的理论知识(第一章)
    学习C语言必须知道的理论知识(第三章常量类型,运算符和表达式)
    C语言中的循环控制语句.
    彻底弄懂JS中的this
  • 原文地址:https://www.cnblogs.com/fensnote/p/13436449.html
Copyright © 2011-2022 走看看