温馨提示×

linux readdir怎么关闭

小樊
49
2026-09-26 20:16:37
栏目: 智能运维

在 Linux 里,readdir 本身不是“打开”的资源,所以没有 closereaddir 这种函数。
你真正需要“关闭”的是 目录流(DIR)*,用 closedir()。


正确用法示例

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

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

    struct dirent *entry;
    while ((entry = readdir(dir)) != NULL) {
        printf("%s\n", entry->d_name);
    }

    closedir(dir);  // ✅ 关闭目录流
    return 0;
}

关键点说明

  • opendir() → 打开目录,返回 DIR *
  • readdir() → 读取目录项
  • closedir() → 关闭目录流(必须调用)

⚠️ 如果你只调用 readdir() 而不调用 closedir(),会造成 文件描述符泄漏。


常见误区

❌ 错误理解

readdir 要关闭

✅ 正确理解

关闭的是 opendir 返回的 DIR *


如果你用的是 getdents(系统调用)

那是另一种方式:

int fd = open("/tmp", O_RDONLY | O_DIRECTORY);
// getdents(...)
close(fd);

此时用 close(fd) 关闭。


如果你是在 C / C++ / Python / Shell 里用,或者遇到具体报错,可以把代码贴出来,我帮你看。

0 踩