目录的 od 模拟

sak*_*isk 5 directory od dump data

我想知道为什么 od(1) 曾经在 UNIX 中工作,但在 GNU/Linux 中不起作用。serverfault上有一个很好的答案。下一个问题是,您是否知道任何可以模拟 od 行为以支持在 GNU/Linux 中转储目录数据的工具?

Bru*_*ger 6

Linux 不允许你做一个简单的read(dir_name, buffer, sizeof(buffer)- 它总是返回 -1 并将 EISDIR 放在errno. 这可能是合理的,因为并非所有文件系统都将目录作为文件。例如,常用的 reiserfs 没有。

您可以使用open()C 程序中的系统调用来获取目录的文件描述符,但诸如readdir(3)(来自 libc)调用getdents(2)来实际检索目录条目。每个文件系统实现中可能都有代码可以struct linux_dirent从文件系统用来存储目录条目的任何东西(文件、数据库、磁盘上的 B 树)创建。