readdir()
是一个在 C 语言中用于读取目录内容的函数,它在
头文件中定义。当你使用 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
(已达到打开文件描述符的限制)等。