open和fopen的区别:

1.缓冲文件系统
缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”, 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则操作外存的次数就少,执行速度就快、效率高。一般来说,文件“缓冲区”的大小随机器 而定。
fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind等
2.非缓冲文件系统
缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针来对文件进行访问,既可以读写字符、字符串、格式化数据,也可以读写二进制数 据。非缓冲文件系统依赖于操作系统,通过操作系统的功能对文件进行读写,是系统级的输入输出,它不设文件结构体指针,只能读写二进制文件,但效率高、速度 快,由于ANSI标准不再包括非缓冲文件系统,因此建议大家最好不要选择它。本书只作简单介绍。open, close, read, write, getc, getchar, putc, putchar 等
前者属于低级IO,后者是高级IO。
后者返回一个文件描述符(用户程序区的),前者返回一个文件指针。
后者无缓冲,前者有缓冲。
后者与 read, write 等配合使用, 前者与 fread, fwrite等配合使用。
http://blog.chinaunix.net/u/21067/showart_213410.html
open 是系统调用 返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引,fopen是C的库函数,返回的是一个指向文件结构的指针。

fopen是ANSIC标准中的C语言库函数,在不同的系统中应该调用不同的内核api
linux中的系统函数是open,fopen是其封装函数,个人观点。仅供参考。

文件描述符是linux下的一个概念,linux下的一切设备都是以文件的形式操作.如网络套接字、硬件设备等。当然包括操作文件。
fopen是标准c函数。返回文件流而不是linux下文件句柄。

设备文件不可以当成流式文件来用,只能用open
fopen是用来操纵正规文件的,并且设有缓冲的,跟open还是有一些区别

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

fopen是标准c里的,而open是linux的系统调用.
他们的层次不同.
fopen可移植,open不能

我认为fopen和open最主要的区别是fopen在用户态下就有了缓存,在进行read和write的时候减少了用户态和内核态的切换,而open则每次都需要进行内核态和用户态的切换;表现为,如果顺序访问文件,fopen系列的函数要比直接调用open系列快;如果随机访问文件open要比fopen快.

open和fopen的区别相关推荐

  1. 基础:open和fopen的区别

    1.缓冲文件系统:fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind等. 缓 ...

  2. linux中fopen和open的区别,Linux下open与fopen的区别

    int open(const char *path, int access,int mode) path 要打开的文件路径和名称 access 访问模式,宏定义和含义如下: O_RDONLY      ...

  3. c语言open不同的编码格式,C语言中open与fopen的区别

    int open(const char *path, int access,int mode) path 要打开的文件路径和名称 access 访问模式,宏定义和含义如下: O_RDONLY     ...

  4. freopen函数的使用以及freopen与fopen的区别 open、fopen、freopen区别(文件操作)

    freopen函数的使用以及freopen与fopen的区别 https://www.cnblogs.com/hi3254014978/p/11450960.html freopen函数的使用:参见这 ...

  5. 总结open与fopen的区别

    对于这两个名字很类似的函数,对于很多初学者来说,不容易搞清楚它们有什么不同,只知道按照函数用法使用. 如果能很好的区分两者,相信大家对于C语言和UNIX系统(包括LINUX)有更深入的了解. 在网上查 ...

  6. c语言中freopen函数,fopen和freopen_C中freopen和fopen的区别(用法+详解+区别)

    最佳答案 fopen 是操作文件用的,比如创建读取等,它有两个参数,第一个是文件名,第二个是操作方式. 第一个参数很好理解,因为是用来操作文件的,自然得告诉它要操作的是什么文件. 第二个参数也不难理解 ...

  7. LINUX系统编程__文件编程__open与fopen的区别

    1. 来源 从来源的角度看,两者能很好的区分开,这也是两者最显而易见的区别: open是UNIX系统调用函数(包括LINUX等),返回的是文件描述符(f'd),它是文件在文件描述符表里的索引: fop ...

  8. open函数和fopen函数区别

    fopen是基于ANSIC标准C的的API open是UNIX系统的API的区别 这里重点运用fopen等ANSIC标准C的的API,open等UNIX系统的API可参考主页文章 1.层次不同 ope ...

  9. open与fopen的区别

    1.先讲文件描述符 当一个可执行程序运行以后,就变成进程,操作系统会为每个进程分配一定的虚拟内存空间,32位操作系统就分配4G.虚拟内存空间结构如下图所示: 1G是内核空间使用,剩余3G为用户空间,虚 ...

最新文章

  1. php 二叉树判断节点的位置,PHP实现判断二叉树是否对称的方法
  2. win7服务器远程灰色的,小编为你细说win7系统远程协助复选框是灰色的详细技巧...
  3. JVM实用参数(五)新生代垃圾回收
  4. 神级代码编辑器 Sublime Text 全程指南
  5. 活动目录数据库授权恢复
  6. web.xml mysql_JSP登录验证脚本失败(mysql后端)web.xml servlet映射?
  7. 在eclipse中安装svn插件
  8. Linux+c语言结构体对齐,C语言中结构体struct的对齐问题解析
  9. spring-boot-2.0.3之quartz集成,数据源问题,源码探究
  10. exchange邮箱账号禁用之后 启用方法
  11. Python多进程(process)和多线程(thread)的区别
  12. Modules Of YoloV5 Architecture
  13. JavaScript cookie js cookie设置
  14. Silverlight 2.0 RTW 正式版发布(附下载地址)
  15. 如何从网站提取数据?
  16. IEEE Access 期刊投稿
  17. 深度强化学习方法(DQN)玩转Atari游戏(pong)
  18. 语义分割中样本分布不均衡怎么办
  19. C++文件服务器项目—FastCGI—4
  20. [USACO06DEC]最少的硬币The Fewest Coins

热门文章

  1. boost::multiprecision模块将 std::numeric_limits 用作 multiprecision.qbk 上的多精度文档片段的示例
  2. boost::multi_index模块相关的测试程序
  3. boost::math::boost::math::interpolators::cardinal_cubic_b_spline用法的测试程序
  4. boost::hana::make_pair用法的测试程序
  5. boost::gil::view_is_mutable用法的测试程序
  6. boost::fusion::all用法的测试程序
  7. Boost:可移植地自定义boost :: hash的测试程序
  8. Boost:人口 bimap的测试程序
  9. VTK:可视化算法之IronIsoSurface
  10. VTK:可视化之CloseWindow