文件描述符(File Descriptor, FD)和 inode在文件访问过程中紧密协作。
文件描述符(FD)是进程访问文件的“钥匙”,inode 是文件在磁盘上的“身份证”;多个 FD 可以指向同一个 inode,实现多进程共享文件,但每个 FD 在进程中独立管理访问状态。
1.inode
在链接处文章介绍,就不过多提了
详情戳这----->提到链接,你能想到什么-优快云博客<-------
2.fd
2.1 进程如何操作一个文件?
1)程序借助内核访问文件(程序无法直接访问硬件)---->是个善于借力的聪明宝宝呢
2)内核利用文件描述符(fd)来访问文件
2.2基本概述
2.2.1what?
是进程打开文件的引用(0,1,2,3)---->整数句柄
2.2.2How?
进程通过fd与内核进行交互(读写操作)
2.2.3Which?
以上三个为默认,当然,也有非默认的

怎么个标准法?:
0---->默认是键盘,也可以是文件或其他命令的输出
1---->默认输出到屏幕
2---->默认输出到屏幕
标准仅是标准,默认仅是默认,实际操作中根据需要进行调整,你掌握着主动权(呀呀呀呀......我命由我不由天)
3.inode与fd的联系(要暧昧了奥)
一个 inode 可以对应多个 FD(多个进程或同一进程多次打开)
一个 FD 只对应一个 inode(打开后就固定了)
FD 是进程级抽象,inode 是文件系统级抽象
小葵花妈妈课堂开课了:
论如何建立暧昧关系:通过内核中的“打开文件表” 建立间接联系,流程如下:
进程---->[文件描述符 FD]----> 内核打开文件表(Open File Table)----> inode ----> 数据块
文件描述符表:每个进程私有,存放 FD → 指向“打开文件表”的指针。
打开文件表:系统全局(或每文件系统),存放实际的“打开文件对象”。
inode 表:文件系统的元数据,存放文件属性、数据块指针等。
流程详解:
1.进程调用 open("file.txt", O_RDONLY) → 内核返回一个 FD(如 3)
2.内核查找文件路径 → 找到对应的 inode
3.内核在“打开文件表”中创建一条记录,包含:
-
)指向该 inode 的指针(关联到文件系统的元数据(文件大小、权限、数据块位置等)。)
---->可知操作谁
-
)当前文件偏移量(记录当前读写操作的位置(字节偏移))
---->可知从哪读写
-
)访问模式(只读/读写等)
---->可知能干什么
-
)引用计数(记录有多少个文件描述符(FD)或进程正在引用这个“打开文件表”条目。)等
---->可知还有谁在用
4.进程通过 FD=3 读写 → 内核根据打开文件表找到 inode → 定位数据块 → 返回数据

被折叠的 条评论
为什么被折叠?



