Chinaunix首页 | 论坛 | 博客
  • 博客访问: 511656
  • 博文数量: 398
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 14
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-21 16:02
个人简介

嵌入式屌丝

文章分类

全部博文(398)

文章存档

2013年(398)

我的朋友

分类: LINUX

2013-08-21 16:56:05

原文地址:open与fopen的区别 作者:list_linux

1.层次不同
     open是系统调用,返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引,
     fopen是ANSIC标准中的C语言库函数,返回的是一个指向文件结构的指针)。在不同的系统中应该调用不同的内核api。linux中的系统函数是open,fopen是其封装函数,fopen的实现要调用open。
2.fopen和open最主要的区别是是否有缓存
     fopen用户态下就有了缓存,它使用了FILE这个结构保存缓冲数据。在进行read和write的时候减少了用户态和内核态的切换。
     open没有缓存,每次读操作都直接从文件系统中获取数据。在进行read和write的时候每次都需要进行内核态和用户态的切换。
     表现为,如果顺序访问文件,fopen系列的函数要比直接调用open系列快;如果随机访问文件open要比fopen快。
3.一般用fopen打开普通文件,用open打开设备文件。
阅读(401) | 评论(0) | 转发(0) |
0

上一篇:linux 任务调度机制

下一篇:linux文件操作

给主人留下些什么吧!~~