Linux——解析文件描述符“int fd”真正含义

作者:小 琛
欢迎转载,请标明出处

引言

在Linux 的学习过程中,不可或缺的就是对于文件操作的学习,我们通常也称之为IO模块。而其中的多个函数的参数都有一个“int fd”。
例如:

Linux——解析文件描述符“int fd”真正含义_第1张图片

解析文件描述符的真正含义

Linux——解析文件描述符“int fd”真正含义_第2张图片
看上图,其中,当创建一个进程之后,随之有了它的PCB(进程控制块),它存放各种信息。

  • 其中就有一个 struct files_struct* files的指针,该指针指向一个结构体
  • 这个结构体内部有一个指针数组 fd_array,该数组内存放的指针分别指向各个对应的模块,每个模块就是一个file,该file的信息,创建日期,权限等均在此。
  • 当拿到这个file的这些信息后,就可以从磁盘的相应位置调出该文件

因此,再回到“int fd”这个问题,这里的fd其实就是file_struct结构体内那个存放指针数组的下标!!! 通过下标就可以控制拿到的文件

而我们在一个进程中,如果使用一个代码测试,我们可创建的文件其实是有上限的,值为1021。而fd_array数组大小为1024,也就是说,系统会自动生成三个内容:标准输入、标准输出、错误输出。

你可能感兴趣的:(Linux)