温馨提示×

centos readdir是什么函数

小樊
45
2026-09-12 01:33:14
栏目: 智能运维

CentOS(以及所有类 Unix / Linux 系统)里,readdir 并不是一个“CentOS 特有的函数”,而是 POSIX / glibc 标准 C 库中的目录读取函数,常用于 C/C++ 程序中遍历目录。


一、readdir 是什么

readdir用来读取目录内容的函数,每次调用返回目录中的一个条目(文件或子目录)。

它通常与下面这些函数配合使用:

  • opendir():打开目录
  • readdir():读取目录项
  • closedir():关闭目录

二、函数原型(man readdir)

#include <dirent.h>

struct dirent *readdir(DIR *dirp);

参数

  • dirp:由 opendir() 返回的目录流指针

返回值

  • 成功:指向 struct dirent 的指针
  • 失败或读到目录末尾:返回 NULL

三、struct dirent 结构(常见字段)

struct dirent {
    ino_t          d_ino;     // inode 号
    off_t          d_off;     // 偏移量
    unsigned short d_reclen;  // 记录长度
    unsigned char  d_type;    // 文件类型
    char           d_name[256]; // 文件名
};

在 CentOS 上,d_name 就是你要的文件/目录名


四、简单示例(CentOS / Linux 通用)

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

int main() {
    DIR *dir = opendir(".");
    struct dirent *entry;

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

    while ((entry = readdir(dir)) != NULL) {
        printf("%s\n", entry->d_name);
    }

    closedir(dir);
    return 0;
}

编译:

gcc readdir_test.c -o readdir_test

五、相关函数(你可能也会用到)

函数 说明
opendir() 打开目录
readdir() 读取一个目录项
readdir_r() 线程安全版本(已不推荐)
scandir() 一次性读取并排序目录
closedir() 关闭目录

六、常见误区

readdir 不是 shell 命令
✅ 它是 C 语言函数

readdir 不会返回 ... 以外的隐藏规则
✅ 它会返回 所有条目,包括 ...


如果你是想:

  • shell 脚本 里遍历目录
  • 或用 Python / Java 读目录
  • 或排查 readdir 报错(如 NULL / errno)

可以告诉我具体场景,我可以给你更针对性的说明。

0