我目前正在为浏览器游戏开发一个假文件系统。我最近实现了“..”和“.” 文件夹,因此每个文件夹都有对其父文件夹的引用。然后我检查了我的终端,如果“/”也有这些文件夹。实际上我很惊讶它有一个目录“..”,这显然是对它自己的引用。
这种一致性的原因还是有更好的解释?
编辑: 我基本上是在寻找记录在案的文档。
文件系统遍历。
当您在 Unix 系统上查看文件名时,您正在查看一棵有根的树。
当您查看文件时,它位于一个目录中。您可以通过上升一个级别 (..) 并检查您所在目录的 inode 来询问该目录是什么。然后重复此操作,您可以建立您所在的位置。但是当你到达根部时,就没有了。只有“这里”。通过设置 '。' 和 '..' 为相同的值,你设置了一个唯一的信号,该文件系统中的其他目录不能有。它是根。
当您将文件系统挂载到另一个挂载点时 - 例如,您在另一个磁盘上有一个 /home 文件系统,您可以使用对根文件系统上的挂载点的引用来覆盖“..”。所以以前挂载的文件系统根目录有一个“.” 和 '..' 是相同的,现在有不同的值。
有'.' 和 '..' 重复相同的数据是一个重要的、独特的信号,仅适用于树的顶部。这告诉遍历程序他们可以停止寻找父节点。
我认为Lions Commentary To The Unix Kernel version 6 中有相关文档。大约在第 84 页,它描述了如何处理挂载点。
| 归档时间: |
|
| 查看次数: |
1170 次 |
| 最近记录: |