Linux 文件描述符到底是什么东西

文件描述符是操作系统管理进程文件的关键,它存储在进程PCB的files_struct中,数组下标即为描述符值。标准输入、输出、错误分别默认对应0、1、2的描述符。系统调用如open、read、write等通过描述符操作文件。关闭文件后,描述符可能会被重新分配。记得操作完毕后关闭文件描述符。
摘要由CSDN通过智能技术生成
  • 这篇博客很长,希望你能看完,是我自己对文件描述符的一些理解,希望能帮助到你

文件描述符

什么是文件描述符

  • 文件描述符是操作系统在进行进程文件管理时,所引入的一种管理方法,这种管理方法是 先描述文件的一系列信息,然后再通过这个文件描述符,进行文件的一些列读写操作

文件描述符在进程中是如何存储的

  • 在进程的PCB中,有专门寸出文件描述符的位置。
  • 在PCB中,有一个*files 的指针,这个指针指向一个名叫 files_struct 的指针数组,这里这个指针数组里存储的就是指向不同文件的指针,既然是一个数组,那就可以通过下标进行数组元素的访问,所以,这里数组的下标的值,就是文件描述符的值。
    在这里插入图片描述
  • 在linux中,一切皆文件,在计算机当中,我们最常接触的就是标准输入和标准输出,还有标准错误输出,这三个在linux中都是以文件的形式存在的,一个进程在开辟的时候,会自动打开这三个文件,存放在 0 1 2 的下标的位置,所以,这三个对应 标准输入,标准输出,标准错误输出。
  • 我们如果在进程中打开文件的时候,系统就会在这个进程的files_struct中添加进对应的文件的指针,然后返回这个文件指针对应的文件描述符,也就是这个文件的下标。我们在进行文件读写操作的时候,如果我们调用的是系统提供的读写操作接口的话,就势必需要使用文件描述符进行操作。(注意,是系统提供的接口,我们在学习语言的时候,其实是通过语言所提供的接口,而非操作系统所提供的接口)这里我画了一个图,帮助你理解系统调用和函数库调用
  • 在这里插入图片描述
  • 系统调用接口,正是绕过了语言所提供的库函数接口,实现了直接面向操作系统的文件操作

文件描述符的一系列操作

  • 如果要直接用文件描述符对文件进行读写操作的话,就需要调用系统提供的接口,系统提供的接口主要有一下几个
  • 文件的打开接口
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>

int open(const char* pathname, int flag
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值