温馨提示×

centos readdir是啥函数

小樊
34
2026-08-30 10:10:05
栏目: 智能运维

CentOS(以及所有 Linux 系统)里,
readdir 不是一个 CentOS 专有的函数,而是标准 C 库(glibc)提供的函数,用来 读取目录内容


一句话说明

readdir 用来 遍历(读取)一个目录里的文件和子目录


函数原型

#include <dirent.h>

struct dirent *readdir(DIR *dirp);

相关函数

函数 作用
opendir() 打开目录
readdir() 读取目录项
closedir() 关闭目录
rewinddir() 重置目录流

基本用法示例

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

int main() {
    DIR *dir = opendir(".");  // 打开当前目录
    if (dir == NULL) {
        perror("opendir");
        return 1;
    }

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

    closedir(dir);
    return 0;
}

编译:

gcc test.c -o test
./test

readdir 返回的结构体

struct dirent {
    ino_t          d_ino;      // inode 号
    off_t          d_off;
    unsigned short d_reclen;
    unsigned char  d_type;     // 文件类型(DT_REG / DT_DIR 等)
    char           d_name[256]; // 文件名
};

⚠️ 注意:

  • readdir 返回的是目录项,不是文件内容
  • 会返回 ...

readdir vs readdir_r

函数 说明
readdir ✅ 推荐,线程安全(glibc 实现)
readdir_r ❌ 已废弃

常见误区

readdir 不能读文件内容
✅ 只能读目录里的文件名

readdir 不是系统调用
✅ 是 glibc 封装,底层调用 getdents


在 CentOS 上查看手册

man readdir

如果没有:

yum install -y man man-pages

如果你是想:

  • ✅ 用 C 写目录遍历
  • ✅ 用 ls 的实现原理
  • ✅ 排查 readdir 返回 NULL 的问题

可以直接继续问,我可以按你的场景讲。

0