我理解文件描述符是用于标识文件的内核句柄,而文件的inode编号是指向具有关于文件的其他详细信息的结构的指针(如果我错了,请纠正我)。但我无法区分它们。
答案 0 :(得分:11)
inode是特定文件系统的工件以及它如何管理间接。 A"传统* ix"文件系统使用它将文件链接到目录中,甚至将文件的多个部分链接在一起。也就是说,inode表示文件系统实现的物理表现形式。
另一方面, a file descriptor是内核对打开文件的不透明标识符。只要文件保持打开状态,就可以使用标识符来执行读取和写入等操作。使用"文件"这里不与磁盘上的一般"文件混淆" - 相反,此上下文中的文件表示可以在其上执行的流和操作,无论源是什么。
文件描述符不与inode相关,除非可以由特定的[文件系统]驱动程序在内部使用。
答案 1 :(得分:1)
根本的区别在于,索引节点代表文件,而文件描述符(fd)代表访问票据的票据,但权限和时间窗口有限。您可以将索引节点视为文件的复杂ID。每个文件对象都有一个唯一的索引节点。另一方面,文件描述符是特定用户的“打开”文件。用户程序不知道文件的索引节点。它使用fd访问文件。根据用户的权限和用户程序选择打开文件的模式(例如,只读),允许fd对文件进行某些操作。一旦fd被“关闭”,用户程序将无法访问该文件,除非它打开了另一个fd。在任何给定时间,可以有多个fds在相同或不同的用户程序中访问文件。