linux文件描述符和打开文件之间的关系

本文详细介绍了文件描述符(fd)与打开文件之间的关系,包括进程级的文件描述表、系统级的打开文件表及i-node信息的概念,并讨论了在不同场景下这些元素如何相互作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要理解文件描述符和打开文件之间的关系,了解内核维护的一下三个数据结构是很有必要的:

1.进程级的文件描述表,(open file description)就是我们常常在代码中使用的int fd变量,由open函数返回。

2.系统级的打开文件表,这是内核对所有打开文件维护的一个描述表格,将表格中的每一项称为打开文件句柄。它存储了

一个打开文件的所有相关信息,例如当前文件的偏移量,访问模式,状态等等。

3.i-node信息,文件系统中的每个文件都有自己的i-node信息,它包含文件类型,访问权限,文件属性等等。


总结:1.同一个进程两次调用open打开同一个文件或者两个进程打开同一个文件,它们的fd会指向不同的文件句柄,i-node指针会指向同一个i-node,因为它们打开的是同一个文件。它们不会共用文件偏移量等句柄信息。

2.如果一个进程fork出另一个进程,两个进程的fd会指向相同的文件句柄,它们会共享文件偏移量等句柄信息。

3.同一个进程中的两个不同的fd可能指向同一个句柄,有可能是使用dup()复制一个fd。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值