温馨提示×

ubuntu readdir是什么函数

小樊
43
2026-09-12 13:01:38
栏目: 智能运维

Ubuntu(Linux) 环境下,readdir 是一个 用于读取目录内容的函数,属于 POSIX 标准,通常在 C 语言中使用,声明在头文件:

#include <dirent.h>

一、函数原型

struct dirent *readdir(DIR *dirp);

参数

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

返回值

  • 成功:返回一个指向 struct dirent 的指针,表示目录中的一个条目
  • 失败或读到目录末尾:返回 NULL

二、相关函数

函数 作用
opendir() 打开目录,返回 DIR *
readdir() 读取目录中的一个条目
closedir() 关闭目录
rewinddir() 重置目录读取位置

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

四、使用示例(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;
}

五、注意事项

  1. readdir 不是线程安全的

    • 线程安全版本:readdir_r()(已逐步废弃)
    • 现代推荐:readdir() + 单线程或加锁
  2. 会读取 ...

    • 需要自己过滤
  3. Ubuntu / Linux 特有扩展

    • readdir64()
    • getdents()(更底层,系统调用)

六、与系统调用的关系

readdir (glibc)
   ↓
getdents / getdents64 (syscall)

如果你是想问:

  • Python 中的 readdir
  • shell 命令
  • readdir 与 ls 的关系
  • 性能 / 大量文件问题

可以继续问我。

0