当前位置:  技术问答>linux和unix

read/write已经有了缓冲实现,为什么fread/fwrite还要实现缓冲?

    来源: 互联网  发布时间:2017-01-08

    本文导语:  为什么posix的io函数已经实现了缓冲的情况下,标准c的函数还要去实现一遍缓冲? 两层拷贝和刷新岂不是降低了系统性能? 谢谢! | 一般都是write就写进去了,可能磁盘太忙了才会排队,所以...

为什么posix的io函数已经实现了缓冲的情况下,标准c的函数还要去实现一遍缓冲?

两层拷贝和刷新岂不是降低了系统性能?

谢谢!

|
一般都是write就写进去了,可能磁盘太忙了才会排队,所以应用缓冲还是有必要的,是为了减少写磁盘次数。

write的缓冲不是为了大块写入吧,应该是因为磁盘访问缓慢才缓冲的,和应用层缓冲目的不同。

你看open函数里可以指定O_RSYNC和O_DSYNC/O_SYNC,它们就是无论write写的多慢,都阻塞等到写完而已。

你不设置的话就是直接write直接返回,数据被缓冲在内核里慢慢写,你也知道而已。 

反正调用一次write就要写一阵磁盘,这避免不了,不如在应用层缓冲多一点再write么。


|
系统提供的read 和 write函数都是没有缓冲的。这两个函数都是内核提供的系统调用。

|
因为移植的考虑。

|
哈哈,要符合标准

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ I/O 成员 read():读取字条符
  • 系统启动问题(read block from filesystem resulted in short read!)在线等!!!
  • java命名空间javax.swing类progressmonitorinputstream的类成员方法: read定义及介绍
  • 请教: read一个socket, read返回需要多长时间?
  • java命名空间java.sql接口connection的类成员方法: transaction_read_uncommitted定义及介绍
  • read一个socket, 发现read到的长度是0, 是否一定代表对方调用了close关闭了socket?
  • java命名空间java.io类objectinputstream的类成员方法: readfully定义及介绍
  • if( (n=Readline( sockfd,line,MAXLINE) )==0)为什么服务器接收到客户FIN时,Read返回的是0。,既然FIN被读出来了,为什么Read返回的是0
  • java命名空间java.io类linenumberreader的类成员方法: read定义及介绍
  • 非阻塞打开设备文件,如果1秒read不到数据,想让read退出如何做?
  • java命名空间java.io接口objectinput的类成员方法: read定义及介绍
  • linux 下的read命令重定向
  • java命名空间java.io类objectinputstream的类成员方法: read定义及介绍
  • socket read返回问题
  • java命名空间java.nio.channels类filechannel.mapmode的类成员方法: read_write定义及介绍
  • 关于epoll ET模式read的一些问题
  • java命名空间java.io类filterinputstream的类成员方法: read定义及介绍
  • cshell脚本中read的问题
  • java命名空间java.text类attributedcharacteriterator.attribute的类成员方法: reading定义及介绍
  • 我的模块的READ没有被调用
  • java命名空间java.nio.channels类filechannel.mapmode的类成员方法: read_only定义及介绍
  • 关于shell read命令


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3