7
1
2014
0

fopen和open

参考博文:

http://www.cnblogs.com/joeblackzqq/archive/2011/04/11/2013010.html

函数原型

fopen:返回的是FILE *

FILE * fopen(const char * path,const char * mode);  

open:返回的是int

int open(const char *pathname, int flags);

int open(const char *pathname, int flags, mode_t mode);

 

两者区别

1.返回值

fopen返回FILE * ,是ANSIC标准中的c语言库函数,可理解为对open的一层封装。返回的是文件流,因为设备不可以当成流式文件,故设备的打开只可以用open。

open返回int,open是系统调用,返回文件句柄,文件的句柄是文件在文件描述符表中的索引。open可以打开设备,也可以打开普通文件。

2.缓冲机制

fopen有缓冲机制,使用FILE这个结构保存缓冲数据。open没有缓存机制,每次读操作都直接从文件系统获取数据。简单来说:fopen有缓冲,open无缓冲

缓冲文件系统特点:在内存开辟一个“缓冲区”,为程序每一个文件使用,读写都要经过缓冲区。

非缓冲文件系统:借助文件结构体指针对文件进行管理,依赖于操作系统,是系统级的输入输出,不设文件结构体指针

3.fopen是在open的基础上扩充而来的,大多数情况用fopen

4.fopen与 fread和 fwrite配合使用。open与read,write配合使用

5.fopen属于高级IO,open属于低级IO

6.一般用fopen打开普通文件,open打开设备文件

7.fopen 可移植,open不能

 

 

Category: Linux | Tags: | Read Count: 920

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com