Linux readdir怎样支持递归遍历

Linux readdir怎样支持递归遍历

Linux系统里,readdir函数并未内置递归遍历目录的功能。它的主要作用是获取指定目录内的文件及子目录信息。若要完成递归遍历,则需自行构建递归函数来达成目标。

以下为一段采用C语言编写的递归遍历目录结构的代码示例:

#include <stdio.h>#include <stdlib.h>#include <dirent.h>#include <string.h>#include <sys/stat.h>void traverse_directory(const char *path) {    DIR *dp;    struct dirent *entry;    struct stat file_stat;    dp = opendir(path);    if (!dp) {        perror("opendir");        return;    }    while ((entry = readdir(dp)) != NULL) {        if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) {            continue;        }        char full_path[1024];        snprintf(full_path, sizeof(full_path), "%s/%s", path, entry->d_name);        if (lstat(full_path, &file_stat) == -1) {            perror("lstat");            continue;        }        if (S_ISDIR(file_stat.st_mode)) {            printf("Directory: %sn", full_path);            traverse_directory(full_path);        } else {            printf("File: %sn", full_path);        }    }    closedir(dp);}int main(int argc, char *argv[]) {    if (argc != 2) {        fprintf(stderr, "Usage: %s <directory>n", argv[0]);        return EXIT_FAILURE;    }    traverse_directory(argv[1]);    return EXIT_SUCCESS;}

登录后复制

文章来自互联网,不代表电脑知识网立场。发布者:,转载请注明出处:https://www.pcxun.com/n/693506.html

(0)
上一篇 2025-06-04 14:00
下一篇 2025-06-04 14:00

相关推荐