在 Debian(以及其它 Linux 系统)里,opendir 是 C 语言标准库(POSIX) 中的函数,用于打开一个目录流,配合 readdir、closedir 等函数使用,用来遍历目录。
下面从作用、头文件、函数原型、使用步骤、示例、常见错误几个方面说明。
opendir 用来:
DIR* 目录流指针readdir 读取目录中的文件/子目录#include <dirent.h>
#include <sys/types.h>
DIR *opendir(const char *name);
name:目录路径(如 "/home/user" 或 ".")DIR* 指针NULL,并设置 errno| 函数 | 作用 |
|---|---|
opendir |
打开目录 |
readdir |
读取目录项 |
closedir |
关闭目录 |
errno |
错误码 |
opendir()
↓
readdir() 循环
↓
closedir()
#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;
}
gcc test.c -o test
./test
dir = opendir("/no/such/dir");
// 返回 NULL
ls: cannot open directory
errno == EACCES
⚠️ 会导致文件描述符泄漏
| 方式 | 说明 |
|---|---|
ls |
shell 命令 |
opendir |
C 程序接口 |
find |
命令行工具 |
scandir:更方便ftw / nftw:递归遍历stat:获取文件信息如果你需要:
可以继续问我。