readdir()
是一个在 C 语言中用于读取目录内容的函数,它在 <dirent.h>
头文件中定义。当你使用 readdir()
函数读取一个目录时,它会返回一个指向 struct dirent
结构的指针,该结构包含有关目录中下一个条目的信息。
struct dirent
结构的定义如下:
struct dirent {
ino_t d_ino; /* Inode number */
off_t d_off; /* Not used by Linux */
unsigned short d_reclen; /* Length of this dirent */
unsigned char d_type; /* Type of file */
char d_name[]; /* Null-terminated filename */
};
以下是 readdir()
返回值中各个字段的解析:
d_ino
:这是一个 inode 号,表示目录条目的唯一标识符。你可以使用这个值来获取有关文件或目录的更多信息。
d_off
:这个字段在 Linux 中未使用,可以忽略。
d_reclen
:这是一个无符号短整数,表示 struct dirent
结构的长度(以字节为单位)。这个值可以帮助你确定结构中文件名的起始位置。
d_type
:这是一个无符号字符,表示目录条目的类型。它可以是以下值之一:
d_name
:这是一个以 null 结尾的字符数组,包含目录条目的名称。这个名称是相对于传递给 opendir()
函数的目录路径的。
当你使用 readdir()
函数时,它会返回一个指向 struct dirent
结构的指针。如果成功读取目录中的下一个条目,它将返回该结构的指针;如果已经到达目录的末尾,它将返回 NULL。在使用完返回的结构后,你应该释放与之关联的内存(如果有的话)。