在 Linux 里,readdir 本身不是一个“打开”的资源,所以没有“关闭 readdir”这一说。
你真正需要关闭的,是和 readdir 配合使用的 目录流(DIR *)。
#include <dirent.h>
DIR *dir = opendir("/path");
if (!dir) {
perror("opendir");
return -1;
}
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
// 处理 entry
}
closedir(dir); // ✅ 这里才是“关闭”
✅ 关闭目录流用 closedir(),不是 readdir()
| 函数 | 作用 | 是否需要关闭 |
|---|---|---|
opendir |
打开目录 | ❌ |
readdir |
读取一个目录项 | ❌ |
closedir |
关闭目录流 | ✅ 必须 |
readdir_rclosedir(dir);
一样,仍然只关 DIR *
❌ 错误写法:
readdir_close(dir); // 不存在
✅ 正确:
closedir(dir);
Linux 中
readdir不需要关闭,关闭的是opendir返回的DIR *,用closedir()。
如果你是在 shell / Python / Java / 某个具体场景 下问的,也可以告诉我,我可以按那个环境讲。