Linux输出缓存你知道多大吗?
2024-09-06 06:34:39
今天看到这个代码很简单,就是验证一下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); 函数会把缓存的数据刷新到输出。
最新文章
- MP3文件ID3信息编辑器代码开源 - 开源研究系列文章
- asp.net使用Get请求webservice
- 使用VS2010编译Qt 5.6.1过程记录
- canvas图片处理
- easyui datalist按组多选
- hihocoder #1388 : Periodic Signal NTT&;FFT
- JS从剪切板里粘贴图片
- CSS 块状元素和内联元素的详解
- CSS笔记(三)背景
- 关于iOS7 设计师需要了解的十件事
- Mongoose 是什么?
- [无人值守安装操作系统]__RHEL6__FTP+TFTP+DHCP+Kickstart+PXE
- 看部电影,透透彻彻理解IoC(你没有理由再迷惑!)
- C语言宏定义函数中的“_##”的意思
- UVA 489-- Hangman Judge(暴力串处理)
- 7 JavaScript Basics Many Developers Aren&#39;t Using (Properly)【转】
- python使用mongodb
- 视音频编解码学习工程:FLV封装格式分析器
- C/C++ -- 插入排序算法
- 从字节码看java类型转换【 深入理解 (T[]) new Object[size] 】