【发布时间】:2012-02-10 06:08:00
【问题描述】:
我正在阅读关于版本 6 unix 的文章,并且刚刚了解了 inode。我有以下问题:
假设我在一个目录中有一个文件,并且在其他地方有一个指向该文件的链接。我是否正确地说,如果我删除文件,inode 仍然存在,因为 refcount 不为 0?这是否意味着链接存在时文件并没有真正删除,我可以通过inode号访问文件?
【问题讨论】:
我正在阅读关于版本 6 unix 的文章,并且刚刚了解了 inode。我有以下问题:
假设我在一个目录中有一个文件,并且在其他地方有一个指向该文件的链接。我是否正确地说,如果我删除文件,inode 仍然存在,因为 refcount 不为 0?这是否意味着链接存在时文件并没有真正删除,我可以通过inode号访问文件?
【问题讨论】:
是的,如果链接是hard link。不,如果只是symbolic link。
硬链接基本上是位于多个目录中的同一个文件,具有相同的 inode。将文件与其目录之一取消链接只会将其引用计数减少一。在达到零之前不会被删除。
符号链接有自己的 inode 并将您重定向到另一个条目。如果删除其目标,则符号链接将悬空。可以删除符号链接本身,而不会影响目标文件或目录。
【讨论】:
文件名只是目录表中指向磁盘某处的条目。硬链接只是指向相同数据的另一个名称条目。任何后续的硬链接都与原始文件名条目没有区别。
所以答案是肯定的。
【讨论】: