温馨提示×

ubuntu readdir返回什么类型

小樊
47
2026-09-30 18:23:42
栏目: 智能运维

在 Ubuntu(Linux)下使用 C/C++ 编程时,readdir 的返回类型如下:

1. 函数原型

#include <dirent.h>

struct dirent *readdir(DIR *dirp);

2. 返回类型

返回类型:

struct dirent *

即:指向 struct dirent 结构体的指针

3. 返回值含义

  • 成功:返回指向 struct dirent 的指针(下一次调用会被覆盖,不能长期保存)
  • 失败或到达目录末尾:返回 NULL

注意:

  • 到达目录结尾和出错都返回 NULL
  • 需要通过 errno 区分错误

4. struct dirent 常见成员(Ubuntu / glibc)

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

5. 简单示例

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

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

closedir(dir);

6. 扩展

  • 线程安全版本:readdir_r(已不推荐)
  • 现代推荐:readdir + 单线程使用,或 scandir

如果你是问 Python / Java / Shell 中的 readdir,也可以告诉我具体语言。

0 踩