fopen 和 open 的什么区别(详细)


前言

少而好学,如日出之阳;壮而好学,如日中之光;志而好学,如炳烛之光。——刘向


一、来源的不同

从来源的角度很好区分俩种的差别

  • open是UNIX系统调用函数(Linux等),返回的是文件描述符,在文件中起到索引的作用。

    • 标准io 是由标准c库提供的 通用的 只针对普通的文件
    • 文件io linu系统特有的使用的是GLIBC库 针对linu所有文件
  • fopen是ANSIC标准的C语言库函数,在不同系统中应该调用不同的内核api.返回的是一个指向文件结构的指针

二、移植性

fopen是C标准库函数,因此拥有良好的移植性;而open是UNIX系统调用,移植性有限。如在window下相似的功能使用API函数CreateFile

三、适用范围

  • open返回文件描述符,而文件描述符是UNIX系统下的一个重要概念,UNIX下的一切设备都是以文件的形式进行操作,包括之后进程间通信所用的管道也是以文件形式打开,以及普通的文件。更接近内核
  • fopen是用来操作普通文件,位于用户层更高级

四 缓冲

1.缓冲文件系统
使用“fopen fclose fread fputs”等函数的时候会在内存开辟一个缓冲区
,先将磁盘文件读取到缓冲区中,装满之后内存在缓冲区进行数据的读取,写文件时也是类似要经过缓冲区执行;因此执行速度就和缓冲区大小相关,缓冲区大操作外存次数就少,速度就快、效率就高。一般来说文件缓冲区的大小有机器决定
2.非缓冲的文件系统
非缓冲的文件系统依赖于操作系统,通过系统的功能对文件进行读写,只能写二进制文件,因此效率高,速度快。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值