在 Debian(以及其它 Linux 系统)中,opendir() 打开的目录流(directory stream)不是用 close() 关闭的,而是用 closedir() 来关闭句柄。
#include <dirent.h>
#include <stdio.h>
int main() {
DIR *dir = opendir("/tmp");
if (dir == NULL) {
perror("opendir");
return 1;
}
/* 使用 readdir() 读取目录 */
if (closedir(dir) == -1) {
perror("closedir");
return 1;
}
return 0;
}
opendir() 返回的是 DIR *closedir(DIR *dirp)DIR * 使用 close(),那是用于文件描述符(int fd)的close((int)dir); // ❌ 错误
正确方式:
closedir(dir); // ✅ 正确
closedir(),会造成 文件描述符泄漏如果你是在 Shell 脚本 或 Python / C++ 里用 opendir,也可以告诉我具体语言,我可以给对应示例。