The*_*eer 6 filesystems directory
我只是在学习文件系统,据说目录只是一个普通文件,它保留了文件-inode 对的列表。
如果我尝试Downloads使用以下任何一项打开目录cat less tail,它只会输出它的目录并且无法打开。
思路怎么读呢?
更正:目录是文件名-inode 对的列表。它不是一个“普通”文件。与符号链接、套接字和设备节点一样,其行为与普通文件不同。
从 shell 中,您可以看到带有ls -i.
从C中,返回的结构体readdir()包含ad_name和ad_ino元素,从中也可以看到这个映射。
从用户空间来看,目录将文件名映射到 inode 的事实通常并不那么重要,因为内核无论如何都要求您按文件名指定文件。它不允许您通过 inode 编号请求文件。
符号链接是另一种文件类型的示例,其中包含无法读取的信息,就好像它是带有系统调用的字节流,如read(). 像普通文件一样,它包含数据。在这种情况下,数据具有特殊含义:它是一个路径名(它是一个字符串),用于命名符号链接的目标。与普通文件不同的是,内容不是用write()而是用写入symlink(),内容不是用read()而是用读取readlink()。