遵循规范

此系统调用是特定于Linux的。

READDIR - Linux手册页

Linux程序员手册 第2部分
更新日期: 2019-03-06

名称

readdir-读取目录条目

另外参见

getdents(2),readdir(3)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/

返回值

成功时,返回1。在目录末尾,返回0。如果出错,则返回-1,并正确设置errno。

说明

这不是您感兴趣的功能。请查看readdir(3)以了解符合POSIX的C库接口。本页记录了裸内核系统调用接口,该接口已由getdents(2)取代。

readdir()从文件描述符fd引用的目录中读取一个old_linux_dirent结构到dirp指向的缓冲区中。参数计数被忽略;最多读取一个old_linux_dirent结构。

声明old_linux_dirent结构(在Linux内核文件fs / readdir.c中是私有的),如下所示:

struct old_linux_dirent {
    unsigned long d_ino;     /* inode number */
    unsigned long d_offset;  /* offset to this old_linux_dirent */
    unsigned short d_namlen; /* length of this d_name */
    char  d_name[1];         /* filename (null-terminated) */
}

d_ino是一个索引节点号。 d_offset是从目录开始到此old_linux_dirent的距离。 d_reclen是d_name的大小,不计算终止的空字节(aq \ 0aq)。 d_name是一个以空值结尾的文件名。

备注

Glibc没有为该系统调用提供包装器;使用syscall(2)调用它。您将需要自己定义old_linux_dirent结构。但是,可能应该改用readdir(3)。

此系统调用在x86-64上不存在。

语法

int readdir(unsigned int fd, struct old_linux_dirent *dirp,
            unsigned int count);

注意:此系统调用没有glibc包装器。请参阅注释。

错误说明

EBADF
无效的文件描述符fd。
EFAULT
参数指向调用过程的地址空间之外。
EINVAL
结果缓冲区太小。
ENOENT
没有这样的目录。
ENOTDIR
文件描述符不引用目录。
日期:2019-08-20 17:59:13 来源:oir作者:oir