文件缓冲区测试实例及总结
来源:互联网 发布:java kafka producer 编辑:程序博客网 时间:2024/05/16 07:38
声明:这篇笔记是我去年写的,当时参考了网友的博客,现在想不起来是哪篇了。如有侵权请告知,我会及时修改,谢谢。
“Talk is cheap, show me the code",so,先来一个例子吧。
#include<stdio.h>int main(void){int i;for(i=1 ; i <= 1024 ; i++){printf("%c",'a');}while(1);return 0;}编译并运行该程序,发现并没有任何输出。printf("%c",'a');这句话难道没有执行吗,打印的a去哪儿了啊?别着急,把上述代码段中的1024改为1025,运行后,程序输出了一大串a。为什么呢?
执行完for(i=1 ; i <= 1024 ; i++)这一句时,程序没有输出任何数据,因为系统把1024个字符写进输出缓冲区,缓冲区刚好写满,但是没有换行符'\n',数据躺在了缓冲区里,并没有被送到标准输出,所以没有在屏幕上打印任何数据;
执行完for(i=1 ; i <= 1025 ; i++)这一句时,程序输出了1024个字符,因为当把第1025个字符放进缓冲区的时候,缓冲区恰好满了,把前面的1024个字符从缓冲区"挤"到了标准输出,即打印到了屏幕上。此时,第1025个字符孤零零的躺在了缓冲区。数据在缓冲区是“前赴后继”的。
以下是我对文件缓冲机制的总结:
1.对文件的操作有带缓冲区和不带缓冲区之分,带缓冲区的分为全缓冲和行缓冲。
2.对文件的读写为什么要使用缓冲机制?
如果没有缓冲区,每当进行文件的读写操作时,都会调用一次系统调用,从进程空间切换到内核空间,程序会进行上下文的切换,会浪费时间。如果对文件的操作比较频繁,则会大大降低对文件操作的效率。
3.什么是全缓冲?
全缓冲,就是当数据填满整个缓冲区时,才会执行读写的系统调用,典型值为8192个字节。
4.什么是行缓冲?
当遇到换行符或者填满整个行时,才会执行读写的系统调用,典型值为1024个字节。
5.还有哪些方式可以将缓冲区的数据同步到磁盘文件?
fclose(fp),在关闭文件之前,会把缓冲区的数据同步到磁盘文件;
fflush(fp),强制刷新缓冲区。
综上所述:执行文件的写操作之后,不能保证把数据成功的,及时的写入到指定的文件,因为系统只是将数据暂时写入了文件缓冲区!
- 文件缓冲区测试实例及总结
- 缓冲区溢出代码实例总结
- Java内部类实例测试及总结
- Java内部类实例测试及总结
- 缓冲区及缓冲区溢出
- “缓冲区溢出攻击”原理分析及实例演示
- Java环形缓冲区+生产消费模型及同步开销测试
- 文件缓冲区
- 文件缓冲区
- scanf输入跳过及清空键盘缓冲区总结
- 缓冲区概念及缓冲区溢出
- FILE结构体(文件描述符及缓冲区)
- 新人入门linux环境搭建及shell文件运行测试实例
- 键盘输入缓冲区测试,了解
- sed学习总结及实例
- JQuery 学习总结及实例
- JQuery 学习总结及实例
- JQuery 学习总结及实例
- 网管的自我修养-服务器相关
- CentOS7安装Nagios并配置出图详解
- ZCMU-1626-计算面积
- js模块化编码
- vim 设置tab宽度
- 文件缓冲区测试实例及总结
- db2解锁及数据导入
- 元数据的使用
- 避免临时表,SQL语句性能提升100倍
- Bayesian Networks Independencies
- 安卓-ListActivity的使用
- 为什么我们要用cocoapods?
- VTK修炼之道47:图形基本操作进阶_法向量计算
- 2017开工大吉