Linux输出缓存你知道多大吗?

简介: 在linux c语言中,当缓冲区达到最大时就会自动输出,在此程序中c没有输出,是因为缓存只有1024字节,c在前1024外,所以再不刷新缓存的情况下,c是不会输出的


今天看到这个代码很简单,就是验证一下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输出里如果加一个换行‘\n’也是可以输出的(这一点在调试时有时会遇到,printf打印的输出没有输出出来,有可能就是忘了加换行了)。fflush(fp); 函数会把缓存的数据刷新到输出。

目录
相关文章
|
17天前
|
存储 缓存 Linux
如何在Linux环境下对pip的缓存地址进行修改
如何在Linux环境下对pip的缓存地址进行修改
156 0
|
17天前
|
缓存 Linux
Linux释放缓存
Linux释放缓存
39 0
|
9月前
|
域名解析 缓存 网络协议
如何在 Linux 上刷新 DNS 缓存?
如何在 Linux 上刷新 DNS 缓存?
433 0
|
9月前
|
缓存 NoSQL Linux
Linux搭建Redis缓存服务器
Linux搭建Redis缓存服务器
112 1
|
17天前
|
存储 缓存 监控
|
17天前
|
缓存 Linux
linux系统缓存机制
linux系统缓存机制
|
17天前
|
缓存 Linux 应用服务中间件
linux yum下载离线包缓存 安装到服务器 实测!!!
linux yum下载离线包缓存 安装到服务器 实测!!!
39 0
|
17天前
|
缓存 应用服务中间件 Linux
Linux系统中基于NGINX的代理缓存配置指南
配置后,NGINX将缓存后端服务器的响应,并根据缓存配置进行有效期控制。这样可以加速页面加载并减轻后端服务器的负担。
21 0
|
17天前
|
存储 缓存 Linux
linux 自动定时清理缓存
linux 自动定时清理缓存
61 0
|
7月前
|
存储 缓存 Linux
系统内存管理:虚拟内存、内存分段与分页、页表缓存TLB以及Linux内存管理
虚拟内存的主要作用是提供更大的地址空间,使得每个进程都可以拥有大量的虚拟内存,而不受物理内存大小的限制。此外,虚拟内存还可以提供内存保护和共享的机制,保护每个进程的内存空间不被其他进程非法访问,并允许多个进程共享同一份物理内存数据,提高了系统的资源利用率。虚拟内存的实现方式有分段和分页两种,其中分页机制更为常用和灵活。分页机制将虚拟内存划分为固定大小的页,将每个进程的虚拟地址空间映射到物理内存的页框中。为了减少页表的大小和访问时间,采用了多级页表的方式,将大的页表划分为多个小的页表,只加载需要的页表项,节约了内存空间。
220 0
系统内存管理:虚拟内存、内存分段与分页、页表缓存TLB以及Linux内存管理