readdir 函数是用于读取目录内容的函数,通常在 POSIX 兼容的系统(如 Linux 和 macOS)中使用。它的原型定义在 <dirent.h> 头文件中。readdir 函数的参数如下:
struct dirent *readdir(DIR *dirp);
DIR *dirp:这是一个指向 DIR 类型的指针,表示要读取的目录流。在使用 readdir 之前,必须先通过调用 opendir 函数打开目录,并返回一个有效的 DIR 指针。readdir 函数没有返回值。如果成功,它返回一个指向 struct dirent 结构的指针,该结构包含有关目录中下一个条目的信息。如果到达目录的末尾或发生错误,则返回 NULL。
struct dirent 结构通常包含以下字段:
long d_ino:文件的 inode 号。off_t d_off:偏移量,用于下次读取。unsigned short d_reclen:d_name 字段的长度。char d_name[]:以 null 结尾的文件名。请注意,readdir 函数的使用可能会受到线程安全性的影响,因为在多线程环境中,多个线程可能同时访问同一个目录流。在这种情况下,需要使用适当的同步机制来避免竞争条件。