嵌入式开发--蒹葭的专栏

Care and Diligence Bring Luck.(谨慎和勤奋才能抓住机遇!)

用户操作
[即时聊天] [发私信] [加为好友]
张志龙ID:flylonginsky
170138次访问,排名445好友2人,关注者38
flylonginsky的文章
原创 95 篇
翻译 0 篇
转载 12 篇
评论 118 篇
蒹葭的公告

奋斗永无止境
仁者不忧,知者不惑,勇者不惧。 Gold Price per Gram in China Yuan Renminbi
最近评论
bluehouse1985:Linux 环境下的多核调试
— Intel + Totalview 强强联合!
目前,在软件开发行业,各种性能优异的调试工具层出不穷。但是,它们中的绝大部分都只支持windows环境。即使能支持linux平台,操作起来也很不方便。因此,对于长期在linux上编写程序的开发人员来说,如何调试就成了一个令人头痛的问题!Intel软件 和 Total……
gsb19870:初学者.........看了下........
jxzxf:不好看懂
xkxiaodao:嗯,都是目标没时间的
zhengyun_ustc:非常感谢!!
文章分类
收藏
相册
MetaWeblog API
工作花絮
那人那事
引用
山外有山
Bekars涡轮增压的Blog
linux应用开发电子报(RSS)
叶帆工作室(RSS)
胶管的Blog(RSS)
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 文件读写操作的缓存机制收藏

新一篇: RM9200中flash文件系统的移植 | 旧一篇: Bugfree2.0+apache+mysql+php在windows2003上配置成功

文件读写操作的缓存机制

       在使用fwrite, fread时,并不是每调用一次就对文件进行读写操作。标准I/Owrite,read之类的调用提供了缓存。它对每个I/O流自动的进行缓存管理,避免应用程序需要考虑这点所带来的麻烦。这样做的目的是避免频繁I/O操作浪费大量时间。然而,我们在实际编程中往往欠考虑I/O 缓存机制,从而带来许多意想不到的麻烦。

       缓存有三种类型,分别是全缓存,行缓存,不带缓存(见一本伟大的书《Unix 环境高级编程》)。一般我们操作磁盘上文件的时候,用全缓存的类型。即调用读写函数填满缓存后,才真正对文件进行一次读写操作。      

       我们可以通过setbuf或者setvbuf来改变缓存类型,。在libc中,默认的缓存大小为8k字节,见stdio.h (#define _G_BUFSIZ 8192) 。我们可以根据我们需要来改变这个缓存大小。

      

       任何时候,我们都可根据需要通过调用fflush()强制刷新一个流,这样可使得缓存没填满的情况下,对文件进行实际的操作。通常这种情况出现在数据流的末尾。如果你经常出现数据在文件末尾丢失的情况,那么就要考虑是否要用fflush来将缓存的内容写入文件。

       当然,fclose()的作用fflush。即调用fclose后,缓存无论有没有填满,都要将缓存内容写入文件。所以,fclose()作用还是很明显的,千万不要偷懒,在每次操作后都要关文件流。

发表于 @ 2008年05月07日 15:07:00|评论(loading...)|编辑

新一篇: RM9200中flash文件系统的移植 | 旧一篇: Bugfree2.0+apache+mysql+php在windows2003上配置成功

评论:没有评论。

发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © 蒹葭