在 Linux 里,readdir 本身不是“打开”的资源,所以没有 closereaddir 这种函数。
你真正需要“关闭”的是 目录流(DIR)*,用 closedir()。
#include <dirent.h>
#include <stdio.h>
int main() {
DIR *dir = opendir("/tmp");
if (!dir) {
perror("opendir");
return 1;
}
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir); // ✅ 关闭目录流
return 0;
}
opendir() → 打开目录,返回 DIR *readdir() → 读取目录项closedir() → 关闭目录流(必须调用)⚠️ 如果你只调用 readdir() 而不调用 closedir(),会造成 文件描述符泄漏。
readdir 要关闭
✅ 正确理解
关闭的是
opendir返回的DIR *
getdents(系统调用)那是另一种方式:
int fd = open("/tmp", O_RDONLY | O_DIRECTORY);
// getdents(...)
close(fd);
此时用 close(fd) 关闭。
如果你是在 C / C++ / Python / Shell 里用,或者遇到具体报错,可以把代码贴出来,我帮你看。