在 Linux 中,opendir()
函数用于打开目录流,对应的关闭操作应使用 closedir()
函数。以下是正确关闭目录流的详细说明和示例:
DIR *opendir(const char *dirname)
int closedir(DIR *dirp)
opendir()
获取 DIR*
指针。closedir()
释放资源。#include <stdio.h>
#include <dirent.h>
#include <errno.h>
int main() {
DIR *dir = opendir("/path/to/directory");
if (dir == NULL) {
perror("opendir failed");
return 1;
}
// ... 读取目录内容(如 readdir())...
if (closedir(dir) == -1) {
perror("closedir failed");
return 1;
}
return 0;
}
closedir()
会导致资源泄漏(文件描述符和内存)。closedir()
返回值,失败时可能表示目录流损坏或权限问题。NULL
调用 closedir()
是未定义行为,需先检查 opendir()
是否成功。closedir()
。
readdir()
和 rewinddir()
时,确保在关闭前完成所有操作。通过规范使用 closedir()
,可以避免资源泄漏并确保程序健壮性。