NAME |LIBRARY |SYNOPSIS |DESCRIPTION |RETURN VALUE |ERRORS |ATTRIBUTES |STANDARDS |STANDARDS |NOTES |SEE ALSO |COLOPHON | |
opendir(3) Library Functions Manualopendir(3)opendir, fdopendir - open a directory
Standard C library (libc,-lc)
#include <sys/types.h>#include <dirent.h>DIR *opendir(const char *name);DIR *fdopendir(intfd); Feature Test Macro Requirements for glibc (seefeature_test_macros(7)):fdopendir(): Since glibc 2.10: _POSIX_C_SOURCE >= 200809L Before glibc 2.10: _GNU_SOURCE
Theopendir() function opens a directory stream corresponding to the directoryname, and returns a pointer to the directory stream. The stream is positioned at the first entry in the directory. Thefdopendir() function is likeopendir(), but returns a directory stream for the directory referred to by the open file descriptorfd. After a successful call tofdopendir(),fd is used internally by the implementation, and should not otherwise be used by the application.
Theopendir() andfdopendir() functions return a pointer to the directory stream. On error, NULL is returned, anderrno is set to indicate the error.
EACCESPermission denied.EBADFfd is not a valid file descriptor opened for reading.EMFILEThe per-process limit on the number of open file descriptors has been reached.ENFILEThe system-wide limit on the total number of open files has been reached.ENOENTDirectory does not exist, orname is an empty string.ENOMEMInsufficient memory to complete the operation.ENOTDIRname is not a directory.
For an explanation of the terms used in this section, seeattributes(7). ┌──────────────────────────────────────┬───────────────┬─────────┐ │Interface│Attribute│Value│ ├──────────────────────────────────────┼───────────────┼─────────┤ │opendir(),fdopendir() │ Thread safety │ MT-Safe │ └──────────────────────────────────────┴───────────────┴─────────┘
POSIX.1-2008.
opendir() SVr4, 4.3BSD, POSIX.1-2001.fdopendir() POSIX.1-2008. glibc 2.4.
Filename entries can be read from a directory stream usingreaddir(3). The underlying file descriptor of the directory stream can be obtained usingdirfd(3). Theopendir() function sets the close-on-exec flag for the file descriptor underlying theDIR *. Thefdopendir() function leaves the setting of the close-on-exec flag unchanged for the file descriptor,fd. POSIX.1-200x leaves it unspecified whether a successful call tofdopendir() will set the close-on-exec flag for the file descriptor,fd.
open(2),closedir(3),dirfd(3),readdir(3),rewinddir(3),scandir(3),seekdir(3),telldir(3)
This page is part of theman-pages (Linux kernel and C library user-space interface documentation) project. Information about the project can be found at ⟨https://www.kernel.org/doc/man-pages/⟩. If you have a bug report for this manual page, see ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩. This page was obtained from the tarball man-pages-6.15.tar.gz fetched from ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on 2025-08-11. If you discover any rendering problems in this HTML version of the page, or you believe there is a better or more up- to-date source for the page, or you have corrections or improvements to the information in this COLOPHON (which isnot part of the original manual page), send a mail to man-pages@man7.orgLinux man-pages 6.15 2025-05-17opendir(3)Pages that refer to this page:close_range(2), execve(2), fanotify_mark(2), fork(2), open(2), closedir(3), dirfd(3), fts(3), getdirentries(3), glob(3), readdir(3), rewinddir(3), scandir(3), seekdir(3), telldir(3)
HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface. For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere. Hosting byjambit GmbH. | ![]() |