在 Linux(以及 POSIX 标准)中,opendir 是一个用于打开目录的函数,通常配合 readdir、closedir 等函数一起使用,用来遍历目录中的文件。
opendir 是什么opendir 用于打开一个目录,并返回一个 目录流(directory stream),后续可以通过这个流来读取目录中的内容。
#include <dirent.h>
DIR *opendir(const char *name);
name:要打开的目录路径(字符串)DIR 结构的指针(目录流)NULL,并设置 errno| 函数 | 作用 |
|---|---|
opendir |
打开目录 |
readdir |
读取目录中的一个条目(文件/子目录) |
closedir |
关闭目录 |
rewinddir |
重置目录流位置 |
seekdir / telldir |
目录流定位 |
#include <stdio.h>
#include <dirent.h>
int main() {
DIR *dir;
struct dirent *entry;
dir = opendir(".");
if (dir == NULL) {
perror("opendir");
return 1;
}
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return 0;
}
ENOENT:目录不存在EACCES:权限不足ENOTDIR:路径不是目录EMFILE / ENFILE:打开文件数过多DIR 是一个不透明结构,用户不应直接访问其内部opendir 只能用于目录,不能用于普通文件如果你愿意,我也可以给你讲:
opendir vs openreaddir 和 readdir_r 的区别