我想知道,od(1)过去为什么在UNIX中工作,但在GNU/Linux中却不能工作。服务器故障上有一个很好的答案。下一个问题是,您知道有什么工具可以模仿od行为来支持在GNU/Linux中转储目录数据吗?
发布于 2012-07-14 16:24:31
Linux不允许您执行普通的read(dir_name, buffer, sizeof(buffer) --它总是返回-1,并将EISDIR放在errno中。这可能是合理的,因为并非所有的文件系统都将目录作为文件。例如,常用的reiserfs没有。
您可以使用C程序中的open()系统调用来获取目录的文件描述符,但是类似于readdir(3) (从libc)调用getdents(2)来实际检索目录条目。每个文件系统实现中可能都有代码可以从文件系统用来存储目录条目的任何东西(文件、数据库、磁盘上B树)中创建struct linux_dirent。
https://unix.stackexchange.com/questions/43056
复制相似问题