fopen与open的区别
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快;