温馨提示×

readdir在Linux中的返回值解析

小樊
55
2025-07-02 09:24:22
栏目: 智能运维

readdir 是一个在 Linux 系统中用于读取目录内容的函数

readdir 函数的原型如下:

#include <dirent.h> struct dirent *readdir(DIR *dirp); 

参数:

  • dirp:一个指向 DIR 类型的指针,表示要读取的目录流。

返回值:

  • 成功时,返回一个指向 struct dirent 结构体的指针,该结构体包含了目录中的一个条目(文件或子目录)的信息。
  • 如果已经到达目录流的末尾,返回值为 NULL

struct dirent 结构体包含以下成员:

  • d_ino:inode 号,表示文件或目录的唯一标识。
  • d_off:偏移量,用于下次调用 readdir 时从该位置继续读取。
  • d_reclen:结构体的长度。
  • d_name:文件或目录的名称,以 null 结尾的字符串。

以下是一个简单的示例,展示如何使用 readdir 函数读取目录内容:

#include <stdio.h> #include <stdlib.h> #include <dirent.h> #include <string.h> int main() { DIR *dir; struct dirent *entry; dir = opendir("."); // 打开当前目录 if (dir == NULL) { perror("opendir"); exit(EXIT_FAILURE); } while ((entry = readdir(dir)) != NULL) { printf("%s\n", entry->d_name); } closedir(dir); return 0; } 

这个程序会列出当前目录下的所有文件和子目录。注意,readdir 返回的 d_name 只包含文件名,不包含路径。如果需要完整路径,可以将目录名和文件名拼接起来。

0