当前位置:   article > 正文

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

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.非缓冲的文件系统
非缓冲的文件系统依赖于操作系统,通过系统的功能对文件进行读写,只能写二进制文件,因此效率高,速度快。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/182997
推荐阅读
相关标签
  

闽ICP备14008679号