温馨提示×

ubuntu copendir如何关闭句柄

小樊
39
2026-10-17 07:21:36
栏目: 智能运维

在 Ubuntu(Linux)下,如果你使用的是 C 语言 的 opendir() 打开了目录流,那么关闭句柄要用 closedir()。

基本用法

#include <dirent.h>
#include <stdio.h>

int main() {
    DIR *dir = opendir("/path/to/dir");
    if (dir == NULL) {
        perror("opendir");
        return 1;
    }

    /* 使用 readdir 等操作 */

    // 关闭目录句柄
    closedir(dir);
    return 0;
}

关键点说明

  • opendir() 返回的是 DIR * 类型的目录流指针
  • 不需要用 close()(那是用于 open() 返回的文件描述符)
  • 对应的关闭函数是 closedir(DIR *)
  • 如果忘记 closedir(),会造成文件描述符泄漏

常见错误

❌ 错误方式:

close(dir);  // 错误,dir 不是 int 文件描述符

✅ 正确方式:

closedir(dir);

如果你用的是 C++

如果你用的是 std::filesystem(C++17):

for (auto &p : std::filesystem::directory_iterator("/path")) {
    // 自动管理,无需手动关闭
}

如果你说的是 其他语言(如 Python、Shell) 或 其他“copendir”接口,可以告诉我具体语言或上下文,我可以更精准回答。

0 踩