gpt4 book ai didi

unix - 为什么 '.' 是 Unix 中的硬链接(hard link)?

转载 作者:行者123 更新时间:2023-12-01 02:42:40 26 4
gpt4 key购买 nike

关闭。这个问题是off-topic .它目前不接受答案。












想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。

10年前关闭。




Improve this question




我已经看到很多解释为什么在基于 Unix 的操作系统中空目录的链接计数是 2 而不是 1。他们都说这是因为 '.'目录,每个目录都指向自己。我明白为什么会有一些“。”的概念。对于指定相对路径很有用,但是通过在文件系统级别实现它可以获得什么?为什么不让 shell 或采用路径的系统调用知道如何解释它?

'..' 是一个真正的链接对我来说更有意义——文件系统需要存储一个指向父目录的指针才能导航到它。但我不明白为什么'。成为一个真正的链接是必要的。它似乎也导致了实现中的一个丑陋的特殊情况——你会认为你只能释放链接数小于 1 的 inode 使用的空间,但如果它们是目录,你实际上需要检查一个链接数少于2。为什么不一致?

最佳答案

Why not just have shells or the system calls that take paths know how to interpret it?



为了透明度。如果文件系统这样做,应用程序(以及无数系统调用)不必对“。”做任何特别的事情。比如“哦,用户想要当前目录!”。 cwd 的概念并且无论它意味着什么,都整齐地存储在 FS 级别。

It also seems like it leads to an ugly special case in the implementation -- you would think you could only free the space used by inodes that have a link count less than 1, but if they're directories, you actually need to check for a link count less than 2.



这不是特例。 Unix 中的所有文件都有许多链接。你的任何文件 unlink选中“这是最后一个链接吗?”。如果是,它会得到印章。如果没有,它会徘徊。

关于unix - 为什么 '.' 是 Unix 中的硬链接(hard link)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7762943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com