c - Linux C 读取一个目录

标签 c linux directory

您好,我想像读取和写入文件一样读取和写入目录。我总是使用openreadwriteclose 函数,这意味着我使用描述符。但是在目录上这样做是行不通的,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/

相关文章:

python - ctypes CDLL 默认路径是什么?

macos - 在 Mac 上将文件夹显示为文件

android - 由于 'build' 文件夹问题,适用于 Android 的 React Native 编译在 Windows 上失败

c - 从 C 中的函数返回指针地址

c# - 了解 cmp(比较器函数)如何用作另一个函数的参数

c - 筛选 8 位素数

linux - 测量程序的网络流量总量

打印字符串的 C 程序行为异常

linux - 如何使用自定义分隔符将多行文件名合并为一个?

处理 Zip 文件的 java 库