1、缓冲文件系统与非缓冲系统的区别

  • 缓冲文件系统(fopen) :在内存为每个文件开辟一个缓存区,当执行读操作,从磁盘文件将数据读入内存缓冲区,装满后从内存缓冲区依次读取数据。写操作同理;
  • 内存缓冲区的大小影响着实际操作外存的次数,缓冲区越大,操作外存的次数越少,执行速度快,效率高。缓冲区大小由机器而定;
  • 借助文件结构体指针对文件管理,可读写字符串、格式化数据、二进制数据;
  • 非缓冲文件系统(open):依赖操作系统功能对文件读写,不设文件结构体指针,只能读写二进制文件;

2、接口级别不同

open属于低级IO,fopen属于高级IO;

3、open返回文件描述符,fopen返回文件指针

open返回文件描述符,属于用户态,读写需进行用户态与内核态切换; fopen返回文件指针;

4、可移值性

open是系统函数,不可移植;
fopen是标准C函数,可移植;

5、打开的文件类型不同

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

6、访问文件速度不同

如果顺序访问文件,fopen比open快;
如果随机访问文件,open比fopen快;

发表评论