您好,我想像读取和写入文件一样读取和写入目录。我总是使用open
、read
、write
和close
函数,这意味着我使用描述符。但是在目录上这样做是行不通的,open
调用有效,但是 read
返回 -1 并且 errno
是 EISDIR。我是否被迫使用流来读取目录?
最佳答案
read()
和write()
系统调用不能用于目录。相反,getdents()
/getdents64()
系统调用用于读取目录。目录根本不能直接写。
此外,glibc 不为 getdents()
/getdents64()
系统调用提供包装器——而是提供符合 POSIX 标准的 readdir()
函数,它是使用这些系统调用实现的。大多数程序应该使用 readdir()
,但也可以使用 syscall()
直接调用系统调用。
关于c - Linux C 读取一个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17131901/