CentOS readdir怎么实现

2026-07-09编程开发122501

CentOS(以及所有 Linux 系统)中,readdir 并不是一条命令,而是 C 语言标准库函数,用于读取目录内容。下面从 原理、示例、编译、常见用法 几个方面说明。


一、readdir 是什么?

readdirPOSIX 标准 API,定义在:

#include 

用于遍历一个目录中的文件和子目录。

函数原型:

struct dirent *readdir(DIR *dirp);

返回值:

  • 成功:返回 struct dirent *
  • 失败 / 读到目录尾:返回 NULL

二、基本使用示例(C 语言)

示例:列出指定目录下的所有文件

#include 
#include 

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

    if (argc < 2) {
        printf("用法: %s \n", argv[0]);
        return 1;
    }

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

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

    closedir(dir);
    return 0;
}

三、在 CentOS 上编译运行

1️⃣ 安装编译环境(如果没有)

sudo yum install -y gcc

2️⃣ 编译

gcc readdir.c -o readdir

3️⃣ 运行

./readdir /etc

输出示例:

.
..
passwd
hosts
fstab
...

四、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]; // 文件名
};

⚠️ d_type 不是所有文件系统都支持。


五、过滤 ...

if (strcmp(entry->d_name, ".") == 0 ||
    strcmp(entry->d_name, "..") == 0)
    continue;

六、常见错误

❌ 忘记关闭目录

  • 会导致 文件描述符泄漏

✅ 正确做法:

closedir(dir);

七、readdir_r(已废弃)

旧代码中常见 readdir_r,但不推荐使用(线程安全也不保证更好):

// 不推荐
readdir_r(dir, &entry, &result);

八、如果你是在问「CentOS 命令」

CentOS 中没有 readdir 命令,但等价命令有:

ls
tree
find

例如:

ls /etc
find /etc -maxdepth 1

九、总结

✅ 在 CentOS 中实现 readdir

  • 本质是 C 语言 API
  • 使用 opendir / readdir / closedir
  • 编译用 gcc
  • 用于遍历目录内容

如果你是想:

  • ✅ 用 Shell 脚本实现
  • ✅ 用 Python / Go / Rust
  • ✅ 做 文件监听或递归遍历
  • ✅ 或问 内核层 readdir 实现

可以直接告诉我,我可以继续深入。

《CentOS readdir怎么实现.doc》

下载本文的Word格式文档,以方便收藏与打印。