温馨提示×

debian copendir能遍历目录吗

小樊
42
2026-09-12 21:25:56
栏目: 智能运维

在 Debian(以及所有遵循 POSIX 标准的 Linux 系统)里,opendir 本身不能遍历目录,它只是打开目录,真正“遍历”要靠 readdir。

基本关系

#include <dirent.h>

DIR *opendir(const char *name);   // 打开目录,返回 DIR*
struct dirent *readdir(DIR *dirp); // 读取下一个目录项
int closedir(DIR *dirp);          // 关闭目录

简单示例(C 语言)

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

int main(int argc, char *argv[]) {
    const char *path = argc > 1 ? argv[1] : ".";
    DIR *dir = opendir(path);
    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:每次调用返回一个目录项(.、..、文件、子目录等)
  • 遍历 = opendir + readdir 循环 + closedir

补充说明

  • 递归遍历子目录需要自己判断 d_type == DT_DIR 并再次 opendir
  • 如果用 C++,可以用 <filesystem>(C++17)
  • 如果用 shell,直接 ls -R 或 find

如果你是想问 “Debian 下有没有命令或函数能直接遍历目录”,也可以告诉我你用的是 C / C++ / Shell / Python,我可以给更具体的例子。

0 踩