我正在学习文件系统实现的基础知识。在实现查找文件时,操作系统如何区分文件和它所在的目录?
例如:如果我想用给定的路径查找文件 foo.c:/home/mac/work/foo.c,操作系统如何决定 home,mac 和 work 是目录,而 foo.c 是 work 中的文件目录
我正在学习文件系统实现的基础知识。在实现查找文件时,操作系统如何区分文件和它所在的目录?
例如:如果我想用给定的路径查找文件 foo.c:/home/mac/work/foo.c,操作系统如何决定 home,mac 和 work 是目录,而 foo.c 是 work 中的文件目录
我将假设这个问题与 Linux 操作系统有关。
根据定义,文件位于树的叶级。因此,任何以 a 为后缀的东西/
都不能是文件。
叶子是另一个故事。 foo.c
可能是一个文件,也可能是一个目录。操作系统必须查看它才能确定它是哪个。在内部,一个目录在技术上是一个文件,但它的行为不同。
更复杂的是,Linux 有软链接和硬链接,它们是可以链接到文件或目录的特殊文件。事实上,一个目录可能是整个文件系统的挂载点。将单独的分区或驱动器挂载为/home
. 你真的不必担心这些。您最关心的是寻址。
如果您想了解 Linux 中的文件是什么,请使用/usr/bin/stat
.