在 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(),可以避免资源泄漏并确保程序健壮性。