在 Ubuntu(Linux)下使用 C/C++ 编程时,opendir() 用来打开一个目录,对应的资源释放函数是 closedir()。
#include <dirent.h>
#include <stdio.h>
int main() {
DIR *dir = opendir("/some/dir");
if (dir == NULL) {
perror("opendir");
return 1;
}
// 使用 dir(如 readdir)
// 释放资源
closedir(dir);
return 0;
}
opendir() 成功返回一个 DIR *closedir(DIR *) 释放free(dir),DIR 不是普通 malloc 的内存opendir() 返回 NULL,不要调用 closedir()❌ 错误:
free(dir); // 错误
close(dir); // 错误(这是文件描述符用的)
✅ 正确:
closedir(dir);
如果你用的是:
DIR *dir = fdopendir(fd);
调用 closedir(dir) 后,fd 也会被关闭,不需要再 close(fd)。
如果你 不想让 closedir 关闭 fd,需要:
int fd2 = dup(fd);
DIR *dir = fdopendir(fd2);
总结一句话:
Ubuntu 下 opendir 打开目录,用 closedir 释放资源。
如果你用的是 C++(如 std::filesystem)或 shell 脚本,也可以告诉我,我可以给你对应方式。