readdir() 是一个在 C 语言中用于读取目录内容的函数,它在 <dirent.h> 头文件中定义。当你使用 readdir() 函数读取 CentOS(或其他 Linux 发行版)上的目录时,它会返回一个指向 dirent 结构的指针,该结构包含有关目录中下一个条目的信息。
dirent 结构的定义如下:
struct dirent {
ino_t d_ino; /* Inode number */
off_t d_off; /* Not used by Linux, reserved */
unsigned short d_reclen; /* Length of this dirent */
unsigned char d_type; /* Type of file */
char d_name[]; /* Null-terminated filename */
};
readdir() 返回值的含义如下:
如果成功读取目录中的下一个条目,readdir() 将返回一个指向 dirent 结构的指针。你可以通过访问 dirent 结构中的成员来获取有关条目的信息,例如:
d_ino:条目的 inode 号。d_type:条目的类型(例如,DT_REG 表示常规文件,DT_DIR 表示目录等)。d_name:条目的文件名。如果已经到达目录的末尾,readdir() 将返回 NULL。
请注意,readdir() 函数可能会因为某些错误而返回 NULL。要检查这些错误,你可以使用 errno 变量。例如,如果 errno 被设置为 EACCES,则表示你没有权限访问目录。其他可能的错误包括 ENOENT(目录不存在)和 EMFILE(已达到打开文件描述符的限制)等。