centos

CentOS readdir返回值解析与处理

小樊
43
2025-09-11 23:05:38
栏目: 智能运维

readdir() 是一个用于读取目录内容的函数,它在 CentOS 系统中的使用与其他 Linux 发行版相同。readdir() 函数的返回值是一个指向 struct dirent 结构的指针,该结构包含了目录项的信息。当读取到目录末尾时,readdir() 返回 NULL。

下面是一个简单的示例,展示了如何使用 readdir() 函数读取目录内容并处理返回值:

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

int main(int argc, char *argv[]) {
    DIR *dir;
    struct dirent *entry;

    if (argc != 2) {
        fprintf(stderr, "Usage: %s <directory>\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    dir = opendir(argv[1]);
    if (dir == NULL) {
        perror("opendir");
        exit(EXIT_FAILURE);
    }

    while ((entry = readdir(dir)) != NULL) {
        printf("Entry name: %s\n", entry->d_name);
        // 在这里处理目录项,例如检查文件类型、大小等
    }

    if (closedir(dir) == -1) {
        perror("closedir");
        exit(EXIT_FAILURE);
    }

    return 0;
}

在这个示例中,我们首先使用 opendir() 函数打开一个目录,然后使用 readdir() 函数读取目录内容。对于每个目录项,我们打印其名称(d_name 字段)。当 readdir() 返回 NULL 时,表示已经到达目录末尾,我们关闭目录并退出程序。

你可以根据需要对示例进行修改,以处理特定的目录项。例如,你可以检查文件类型(通过 entry->d_type 字段)、文件大小(通过 entry->d_size 字段)等。更多关于 struct dirent 结构的信息,你可以查阅 Linux 手册页(man 3 dirent)。

0
看了该问题的人还看了