首页 > 其他 > 详细

【转】open与fopen的区别

时间:2020-08-01 12:22:50      阅读:97      评论:0      收藏:0      [点我收藏+]

转自http://blog.chinaunix.net/uid-29025972-id-3847404.html
1.层次不同

  • open是系统调用,返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引。
  • fopen是ANSIC标准中的C语言库函数,返回的是一个指向文件结构的指针。在不同的系统中应该调用不同的内核api,Linux中的内核api是open。fopen是open的封装函数,fopen的实现要调用open。

2.缓存不同
fopen和open另一个区别是是否有缓存

  • fopen用户态下就有了缓存,它使用了FILE这个结构保存缓冲数据。在进行read和write的时候减少了用户态和内核态的切换。
  • open没有缓存,每次读操作都直接从文件系统中获取数据。在进行read和write的时候每次都需要进行内核态和用户态的切换。

表现为,如果顺序访问文件,fopen系列的函数要比直接调用open系列快;如果随机访问文件open要比fopen快。
3.一般用fopen打开普通文件,用open打开设备文件。

【转】open与fopen的区别

原文:https://www.cnblogs.com/swordenchanter/p/13413734.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!