为什么硬链接不允许在UNIX / Linux目录

我在教科书中读到,UNIX / Linux不允许硬链接到目录,但软链接呢? 是因为当我们有周期,如果我们创build一个硬链接,它会指向一些垃圾值?

如果循环是不允许硬链接的唯一原因,那么为什么softlinks被允许到目录?

不允许硬链接,因为它们会导致循环。 一旦你允许周期形成,你必须执行一个标记和扫描垃圾收集来检测何时可以最终删除隔离的目录循环(不再可以从根目录访问) – 这在磁盘上是非常昂贵的。

软链接不会导致此问题,因为它们不会引起目标目录的引用计数; 因此您仍然可以通过引用计数(最多只能引用一个参考:)。

另一个问题是遍历文件系统的程序(例如find )需要避免循环。 他们可以通过记住他们已经看到的每个inode编号做到这一点,但是如果能够区分可能导致循环的链接(即,软链接)和不会导致循环的链接(正常的目录条目)跳过软链接,他们不需要跟踪inode号码了。