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); 函数会把缓存的数据刷新到输出。

  • 相关阅读:
    2019-2020-2 网络对抗技术 20175206李得琛 Exp5 信息搜集与漏洞扫描
    2019-2020-4 网络对抗技术 20175206李得琛 Exp4 恶意代码分析
    2019-2020-2 网络对抗技术 20175206李得琛 Exp3 免杀原理与实践
    2019-2020-2 网络对抗技术 20175206李得琛 Exp2 后门原理与实践
    2019-2020-2 网络对抗技术 20175206李得琛 Exp1 PC平台逆向破解
    ucos作业
    实现ls及ls的改进ls的实现
    stat命令的实现-mysate
    2019-2020-1 20175203 20175206 实验五 通讯协议设计
    第八周测试课下补交
  • 原文地址:https://www.cnblogs.com/fensnote/p/13436449.html
Copyright © 2011-2022 走看看