温馨提示×

Debian如何调用readdir

小樊
34
2026-08-12 06:46:00
栏目: 智能运维

Debian(以及所有 Linux) 中,readdir 不是 shell 命令,而是 C 语言标准库函数,用于读取目录内容。下面分几种常见情况说明。


一、readdir 是什么?

readdirPOSIX 标准 C 函数,定义在:

#include <dirent.h>

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


二、在 Debian 下用 C 调用 readdir(最常见)

1️⃣ 示例代码(readdir.c)

#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;
}

2️⃣ 编译(Debian)

gcc readdir.c -o readdir

3️⃣ 运行

./readdir

输出当前目录下的所有文件和目录(包括 ...)。


三、readdir 相关结构体说明

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

常用 d_type

含义
DT_REG 普通文件
DT_DIR 目录
DT_LNK 符号链接

四、Shell 中“等价”的 readdir(不是真的 readdir)

如果你只是想在 Shell 中列出目录内容,不需要 readdir

ls

或者:

for f in *; do
    echo "$f"
done

五、Python 中“调用 readdir”

Python 底层也是用 readdir

import os

for name in os.listdir("."):
    print(name)

六、常见误区

不能在 shell 里直接调用 readdir
readdirC 库函数

readdir 不能递归子目录
✅ 需要自己写递归逻辑


七、Debian 相关包

如果你要开发 C 程序,确保有:

sudo apt install build-essential

如果你是想:

  • 写 C 程序
  • 理解 readdir 原理
  • 在 shell / Python 中替代 readdir
  • 调试 readdir 返回结果

可以告诉我你的具体使用场景,我可以给你更针对性的示例。

0