我想知道为什么 od(1) 曾经在 UNIX 中工作但在 GNU/Linux 中不起作用。有一个很好的答案服务器故障。下一个问题是,您是否知道有任何工具可以模拟 od 行为以支持在 GNU/Linux 中转储目录数据?
答案1
Linux 不允许您执行普通操作read(dir_name, buffer, sizeof(buffer)
- 它总是返回 -1 并将 EISDIR 放入errno
.这可能是合理的,因为并非所有文件系统都将目录作为文件。例如,常用的 reiserfs 就没有。
您可以使用open()
C 程序中的系统调用来获取目录的文件描述符,但是readdir(3)
(从 libc 中)调用之类的东西getdents(2)
可以实际检索目录条目。每个文件系统实现中可能都有代码,用于struct linux_dirent
从文件系统用来存储目录条目的任何内容(文件、数据库、磁盘上的 B 树)创建。