linux - Linux中如何证明目录是一个文件

标签 linux linux-kernel

“在 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/

相关文章:

linux - Bash 修剪或 sed 换行

linux - OpenNMS 安装失败并出现错误,预期稳定但得到了 opennms-23,是否有可能去解决它?

linux - 如何使用 cURL 从 GitHub 下载 tarball?

linux - 在 Linux 内核中如何为守护进程分配 pid(进程 ID)?

linux - 我自己的 linux Chorded 键盘驱动程序和我的嵌入式应用程序的接口(interface)

c - 如何正确实现 kthreads 的完成?

linux - Init.d 脚本不启动或停止只打印帮助信息

linux - 如何在脚本中使用定界符来避免数字和特殊字符

linux - Linux 管道缓冲区有多少数据? linux 管道缓冲区大小可以配置吗?

linux-kernel - CPU如何知道PCI地址空间