温馨提示×

debian copendir如何关闭句柄

小樊
33
2026-10-04 00:19:06
栏目: 智能运维

在 Debian(以及其它 Linux 系统)中,opendir() 打开的目录流(directory stream)不是用 close() 关闭的,而是用 closedir() 来关闭句柄。

基本用法

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

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

    /* 使用 readdir() 读取目录 */

    if (closedir(dir) == -1) {
        perror("closedir");
        return 1;
    }

    return 0;
}

说明

  • opendir() 返回的是 DIR *
  • 对应关闭函数是 closedir(DIR *dirp)
  • 不要对 DIR * 使用 close(),那是用于文件描述符(int fd)的

常见错误

close((int)dir);   // ❌ 错误

正确方式:

closedir(dir);     // ✅ 正确

补充说明

  • 如果不调用 closedir(),会造成 文件描述符泄漏
  • 程序退出时系统会自动回收,但长期运行程序(daemon / 服务)必须手动关闭

如果你是在 Shell 脚本 或 Python / C++ 里用 opendir,也可以告诉我具体语言,我可以给对应示例。

0 踩