在Linux中,readdir函数用于读取目录中的条目。它返回一个指向dirent结构体的指针,该结构体包含了关于目录条目的信息,如文件名、文件类型等。
dirent结构体定义如下:
struct dirent {
long d_ino; /* Inode number */
off_t d_off; /* Offset to the next dirent */
unsigned short d_reclen; /* Length of this dirent */
unsigned char d_type; /* Type of file */
char d_name[]; /* Null-terminated filename */
};
readdir函数的原型如下:
#include <dirent.h>
DIR *opendir(const char *name);
struct dirent *readdir(DIR *dirp);
int closedir(DIR *dirp);
readdir函数接受一个DIR类型的指针作为参数,该指针是通过opendir函数打开目录后返回的。readdir函数返回一个指向dirent结构体的指针,该结构体包含了目录条目的信息。当没有更多的目录条目时,readdir函数返回NULL。
需要注意的是,dirent结构体中的d_name成员是一个可变长度的字符数组,用于存储目录条目的文件名。由于它的长度是可变的,因此在处理dirent结构体时,需要特别注意内存分配和释放。