在 Debian(或者说在 POSIX/Linux 环境下,使用 C 语言)中,opendir() 用于打开一个目录流,返回的是 DIR *。
释放资源的方法是使用 closedir()。
#include <dirent.h>
#include <stdio.h>
int main(void) {
DIR *dir = opendir("/tmp");
if (dir == NULL) {
perror("opendir");
return 1;
}
/* 使用 readdir 等读取目录 */
// 释放资源
closedir(dir);
return 0;
}
closedir() 才能释放资源opendir() 会分配内存并打开文件描述符closedir(),否则会造成:
closedir(dir);
closedir() 后不要再用 DIR *closedir(dir);
dir = NULL; // 好习惯,避免悬空指针
如果你在 readdir() 或处理过程中出错,也要关闭:
if (some_error) {
closedir(dir);
return -1;
}
free()❌ 错误示例:
free(dir); // 错误!
✅ 正确:
closedir(dir);
| 函数 | 作用 |
|---|---|
opendir() |
打开目录,返回 DIR * |
readdir() |
读取目录项 |
closedir() |
关闭目录,释放资源 |
一句话:
Debian / Linux 下
opendir()打开的目录,必须用closedir()释放资源。
如果你需要 C++ / Rust / Python 或具体场景(如异常安全)的示例,也可以继续问。