Linux 不允许你做一个简单的read(dir_name, buffer, sizeof(buffer)- 它总是返回 -1 并将 EISDIR 放在errno. 这可能是合理的,因为并非所有文件系统都将目录作为文件。例如,常用的 reiserfs 没有。
您可以使用open()C 程序中的系统调用来获取目录的文件描述符,但诸如readdir(3)(来自 libc)调用getdents(2)来实际检索目录条目。每个文件系统实现中可能都有代码可以struct linux_dirent从文件系统用来存储目录条目的任何东西(文件、数据库、磁盘上的 B 树)创建。