在 Debian(以及一般类 Unix/Linux 系统)中,opendir 是一个 C 语言标准库函数(定义在 <dirent.h> 中),用于打开一个目录流(directory stream),以便后续读取目录内容。
opendir 是什么#include <dirent.h>
DIR *opendir(const char *name);
name 指定的目录DIR *(目录流指针)NULL,并设置 errno通常与以下函数配合使用:
readdir():读取目录项closedir():关闭目录流rewinddir() / seekdir() / telldir():目录流定位opendir 适用场景最常见的场景,比如:
ls 类似功能DIR *dir = opendir("/var/log");
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
适用于:
虽然 opendir 本身不递归,但可以:
opendir + readdir 遍历stat 判断是否为目录opendir适合:
在以下程序中常用:
相比高级语言(Python os.listdir、Go filepath.Walk):
opendir 更底层opendir 的场景opendir)system("ls") 或高级 API)<dirent.h>gcc test.c -o test
opendir 失败)opendir 适用于:
在 C/C++ 程序中,需要打开并遍历目录、进行底层文件/目录操作的场景。
如果你愿意,我可以给你一个完整的 Debian 下 opendir 示例程序或递归遍历目录的例子。