linux

linux opendir如何遍历子目录

小樊
81
2024-12-29 02:57:13
栏目: 智能运维

在Linux中,使用opendir和readdir函数可以遍历目录及其子目录

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

int main() {
    DIR *dir;
    struct dirent *entry;
    char path[] = "/path/to/directory"; // 替换为你要遍历的目录路径

    // 打开目录
    if ((dir = opendir(path)) == NULL) {
        perror("Failed to open directory");
        exit(EXIT_FAILURE);
    }

    // 遍历目录及其子目录
    while ((entry = readdir(dir)) != NULL) {
        // 输出当前目录项的名称
        printf("Entry: %s\n", entry->d_name);

        // 如果是子目录,递归遍历
        if (entry->d_type == DT_DIR && strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0) {
            char subpath[PATH_MAX];
            snprintf(subpath, sizeof(subpath), "%s/%s", path, entry->d_name);
            if (chdir(subpath) == 0) {
                main(); // 递归调用main函数
                chdir(".."); // 返回上一级目录
            } else {
                perror("Failed to change directory");
            }
        }
    }

    closedir(dir);
    return EXIT_SUCCESS;
}

这个示例程序首先打开指定目录,然后使用readdir函数逐个读取目录项。如果遇到子目录,程序会递归地遍历子目录。注意,这个示例程序没有处理可能的错误,例如内存不足或权限问题。在实际应用中,你需要根据具体情况添加错误处理代码。

0
看了该问题的人还看了