另外参见

open(2),closedir(3),dirfd(3),readdir(3),rewinddir(3),scandir(3),seekdir(3),telldir(3)

返回值

opendir()和fdopendir()函数返回指向目录流的指针。错误时,将返回NULL,并正确设置了errno。

语法

#include <sys/types.h>
#include <dirent.h>

DIR *opendir(const char *name);
DIR *fdopendir(int fd);

glibc的功能测试宏要求(请参阅feature_test_macros(7)):

fdopendir():

Since glibc 2.10:
_POSIX_C_SOURCE>= 200809L
Before glibc 2.10:
_GNU_SOURCE

遵循规范

opendir()存在于SVr4、4.3BSD上,并在POSIX.1-2001中指定。 fdopendir()在POSIX.1-2008中指定。

出版信息

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

说明

opendir()函数打开与目录名称相对应的目录流,并返回指向该目录流的指针。流位于目录中的第一项。

fdopendir()函数类似于opendir(),但返回打开文件描述符fd所引用目录的目录流。成功调用fdopendir()之后,fd由实现在内部使用,否则不应由应用程序使用。

名称

opendir,fdopendir-打开目录

OPENDIR - Linux手册页

Linux程序员手册 第3部分
更新日期: 2017-09-15

备注

可以使用readdir(3)从目录流中读取文件名条目。

可以使用dirfd(3)获得目录流的基础文件描述符。

opendir()函数为DIR *底层的文件描述符设置close-on-exec标志。 fdopendir()函数使文件描述符fd的close-on-exec标志设置保持不变。 POSIX.1-200x不确定是否成功调用fdopendir()将为文件描述符fd设置执行时关闭标志。

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
opendir(),fdopendir()Thread safetyMT-Safe

版本

从2.4版开始,glibc中提供了fdopendir()。

错误说明

EACCES
没有权限。
EBADF
fd不是打开供读取的有效文件描述符。
EMFILE
已达到打开文件描述符数量的每个进程限制。
ENFILE
已达到系统范围内打开文件总数的限制。
ENOENT
目录不存在,或者名称为空字符串。
ENOMEM
内存不足,无法完成操作。
ENOTDIR
名称不是目录。
日期:2019-08-20 18:00:58 来源:oir作者:oir