如何使用readdir实现目录树遍历

readdir 是一个用于读取目录内容的函数,通常在 C 语言中使用。要使用 readdir 实现目录树遍历,你需要递归地遍历每个目录,并对每个目录中的文件和子目录执行操作。以下是一个简单的示例,展示了如何使用 readdir 遍历目录树:

#include 
#include 
#include 
#include 
#include 

void traverse_directory(const char *path) {
    DIR *dir;
    struct dirent *entry;
    struct stat path_stat;

    dir = opendir(path);
    if (dir == NULL) {
        perror("opendir");
        return;
    }

    while ((entry = readdir(dir)) != NULL) {
        if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) {
            continue;
        }

        snprintf(path_stat.path, sizeof(path_stat.path), "%s/%s", path, entry->d_name);
        if (stat(path_stat.path, &path_stat) == -1) {
            perror("stat");
            continue;
        }

        if (S_ISDIR(path_stat.st_mode)) {
            printf("Directory: %s\n", path_stat.path);
            traverse_directory(path_stat.path);
        } else {
            printf("File: %s\n", path_stat.path);
        }
    }

    closedir(dir);
}

int main(int argc, char *argv[]) {
    if (argc != 2) {
        fprintf(stderr, "Usage: %s \n", argv[0]);
        return 1;
    }

    traverse_directory(argv[1]);
    return 0;
}

这个程序接受一个命令行参数,即要遍历的目录。它首先打开目录,然后使用 readdir 读取目录中的每个条目。对于每个条目,它使用 stat 函数获取文件或目录的信息。如果条目是一个目录,程序会递归地调用 traverse_directory 函数。如果条目是一个文件,程序会打印文件的路径。

要编译并运行此程序,请将其保存为 traverse_directory.c,然后使用以下命令:

gcc traverse_directory.c -o traverse_directory
./traverse_directory /path/to/directory

/path/to/directory 替换为要遍历的目录。

相关推荐:

CentOS怎样替换系统图标

在CentOS上“替换系统图标”要看你指的是哪一类图标,不同场景做法不一样。下面按常见需求分别说明(以CentOS7/8/Stream+GNOME桌面为主,其他桌面类似)。 一、替换「应用程序图标」(最常见) 方法1:替换.desktop文件中的图标(推荐) 找到对应的.desktop文件 ls/u...

CentOS如何配置Jenkins

下面以CentOS7/CentOS8为例,说明如何安装并配置Jenkins(包含常见坑点),步骤清晰、可直接照做。 一、环境准备 1.系统更新 sudoyumupdate-y 2.安装Java(Jenkins依赖) Jenkins依赖Java8或Java11/17 CentOS7 sudoyumin...

Jenkins如何连CentOS

下面按最常见、最实用的方式给你讲:Jenkins如何连接(管理)CentOS服务器,包括SSH方式和Agent方式,适合新手一步步操作。 一、常见连接方式说明 Jenkins连接CentOS主要有3种方式: 方式 适用场景 ✅SSH插件(PublishOverSSH) Jenkins控制CentOS...

CentOS怎么安装Jenkins

在CentOS(7/8/Stream)上安装Jenkins,推荐使用官方YUM仓库,这是最稳定、最常用的方式。下面按步骤详细说明。 一、准备工作 1️⃣安装Java(Jenkins依赖) Jenkins需要Java8或Java11/17(推荐Java11或17) CentOS7 yuminstall...

CentOS如何卸载Jenkins

在CentOS上卸载Jenkins,通常分为停止服务→卸载软件包→清理残留文件几个步骤。下面按常见情况给你一个完整流程。 一、停止Jenkins服务 sudosystemctlstopjenkins sudosystemctldisablejenkins 确认状态: systemctlstatusj...

Jenkins在CentOS怎么配

在CentOS上配置Jenkins一般分为几个步骤: 安装Jenkins→启动服务→开放端口→初始化配置→安装插件&创建任务。下面给你一个从零到可用的完整流程(适用于CentOS7/8/Stream)。 一、前置条件 1️⃣确认Java已安装(Jenkins依赖Java) Jenkins需要...

如何修复CentOS Jenkins

“修复CentOS上的Jenkins”要看具体出了什么问题,但下面我按最常见故障场景给你一套系统化的排查与修复步骤,你可以对照使用。如果你愿意,也可以把报错日志贴出来,我可以更精准地帮你定位。 一、先确认Jenkins是否真的坏了 1️⃣查看Jenkins状态 systemctlstatusjenk...

CentOS装Jenkins难不难

CentOS上装Jenkins不算难,只要按步骤来,一般10~30分钟就能跑起来。对新手来说,难点主要在Java环境和端口/权限,而不是Jenkins本身。 下面给你一个清晰结论+安装思路+常见坑,看完基本就能装成功。 一、结论先说 ✅难度:低~中 ✅推荐方式:用Jenkins官方RPM(最稳) ❌...