Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1943776
  • 博文数量: 2504
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 25169
  • 用 户 组: 普通用户
  • 注册时间: 2020-11-26 14:30
个人简介

更多python、Linux、网络安全学习内容,可移步:www.oldboyedu.com或关注\"老男孩Linux\"公众号

文章分类

全部博文(2504)

文章存档

2024年(354)

2023年(643)

2022年(693)

2021年(734)

2020年(80)

我的朋友

分类: LINUX

2022-07-20 13:41:49

  在学习Linux的时候,不少小伙伴应该都接触过open与fopen,因为只有一个字母之差,所以很多人经常会将它们混淆在一起,那么Linux中open与fopen区别是什么?具体请看下文。

  1、来源

  从来源的角度看,两者能很好的区分开,这也是最显而易见的区别:

  ①open是Unix系统调用函数,返回的是文件描述符,它是文件在文件描述符表里的索引;

  ②fopen是ANSIC标准中的C语言库函数,在不同的系统中应该调用不同的内核api。返回的是一个指向文件结构的指针。

  2、移植性

  这一点从上面的来源可以推断出来,fopen是C标准函数,因此拥有良好的移植性,而open是Unix系统调用,移植性有限。如Windows下相似的功能使用API函数CreateFile。

  3、适用范围

  ①open返回文件描述符,而文件描述符是Unix系统下的一个重要概念,Unix下的一切设备都是以文件的形式操作。如网络套接字、硬件设备等。当然包括操作普通正规文件。

  ②fopen是用来操纵普通正规文件。

  4、文件IO层次

  如果从文件IO的角度来看,前者属于低级IO函数,后者属于高级IO函数。低级和高级的简单区分标准是:谁离系统内核更近。低级文件IO运行在内核态,高级文件IO运行在用户态。

阅读(278) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~