文件描述符、打开文件描述和索引节点有什么区别?

文件描述符、打开文件描述和索引节点有什么区别?
  1. 文件描述符和打开文件描述之间的对应/区别是什么?
  2. 文件描述和索引节点之间的对应/区别是什么?

答案1

我突然想到...文件描述符是一个由进程持有的数字引用,该进程引用一个“打开文件描述”在内核中。打开文件描述保存有关打开哪个文件、什么模式(读/写)以及在哪里在文件中将应用下一次读取或写入。

索引节点不直接链接到任何流程。它们是文件系统的一个功能。它们保存文件所有权等元数据。如果一个文件有多个文件名(已被硬链接),那么它仍然只有一个 inode。

答案2

文件描述符是操作系统为您的应用程序提供的数组中的一个元素。你总是有这样的数组 - 操作系统在启动新进程时创建它。操作系统通常用指向 stdin、stdout 和 stderr 的指针填充前三个元素。

打开文件描述符是指向某个文件的数组元素。您调用open(),操作系统会在数组中查找空元素并使用它。相反,关闭/未打开的文件描述符是一个空(或逻辑上为空)的数组元素。

inode - 该驱动器上文件的唯一(驱动器内部)标识符。

相关内容