
在内核中,与文件描述符相关的三个主要数据结构分别是:
-  文件描述符表(进程级):这是每个进程所拥有的数据结构,用于维护进程中打开的所有文件描述符。每个 fd 在这个表中都有一个对应的条目,指向更底层的文件表示结构。 
-  打开文件列表(系统级):这是一个全系统范围内的数据结构,用于跟踪所有已打开的文件。当一个文件被打开时,不管它被打开了多少次,系统级的列表中都有一个对应的条目。这个列表包含了文件的当前状态,如文件指针的位置和访问模式。 
-  i-node 表(系统级):这是文件系统级别的数据结构,包含了文件系统中所有文件的 inode。inode 是一个存储文件元数据的数据结构,例如文件的大小、权限、所有者以及文件数据所在的位置。每个文件或目录在文件系统中都有一个唯一的 inode。 
这里我们借用《Linux/UNIX 系统编程手册》这本书中的这张图来介绍这三个数据结构的区别:

 先开看进程 A,它的 1 号 fd 和 20 号 fd 指向了打开文件表(系统级)的同一项。
 
 这种情况

![[设备] 关于手机设备中几种传感器的研究](https://i-blog.csdnimg.cn/direct/b850d79295dc4fff81f4a00b2788211c.png)

















