“在 Linux 中一切皆文件”。我如何证明目录在 linux 中表示为文件。此外,物理硬件设备在 Linux 中创建并表示为文件。但是我如何通过支持示例向某人证明这个概念。
在 Liniux 中将目录和其他物理硬件作为文件查看。(POC)
最佳答案
“Linux 中一切皆文件”的说法有点过于简单化了。在 Linux 中有许多东西以文件的形式出现,但并不完全像您认为它们在传统意义上的“行为”。
block 文件(例如 /dev/loop0
)就是一个很好的例子,因为它们被用作与设备驱动程序通信的方式。
也就是说,目录是它们自己的“特殊”类型的文件,其中包含指向文件 inode 的 inode id。我想一个简单的“证明”类型是 ls -l
任何目录,您会注意到其中大多数(如果不是全部)列出的文件大小为 4096 字节,而不是列出其内容的总大小。
4096 字节是大多数文件系统的最小块大小,通常足以容纳目录的所有信息(inode id)。因此,目录不是直接信息/访问其文件,而是保存关于它们的元数据。
或者,在任何目录上使用 stat
将显示它自己的 inode 编号(以及它拥有的链接数)。
编辑:目录文件包含 inode id(指向文件 inode 的指针)而不是 inode 本身。我已经编辑了答案。
关于linux - Linux中如何证明目录是一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54641683/