# opendir

## NAME



           opendir, fdopendir - open a directory
    


## LIBRARY



           Standard C library (_libc_ , _-lc_)
    


## SYNOPSIS



           **#include <sys/types.h>**
           **#include <dirent.h>**
    
           **DIR *opendir(const char ***_name_**);**
           **DIR *fdopendir(int** _fd_**);**
    
       Feature Test Macro Requirements for glibc (see
       feature_test_macros(7)):
    
           **fdopendir**():
               Since glibc 2.10:
                   _POSIX_C_SOURCE >= 200809L
               Before glibc 2.10:
                   _GNU_SOURCE
    


## DESCRIPTION



           The **opendir**() function opens a directory stream corresponding to
           the directory _name_ , and returns a pointer to the directory stream.
           The stream is positioned at the first entry in the directory.
    
           The **fdopendir**() function is like **opendir**(), but returns a
           directory stream for the directory referred to by the open file
           descriptor _fd_.  After a successful call to **fdopendir**(), _fd_ is used
           internally by the implementation, and should not otherwise be used
           by the application.
    


## RETURN VALUE



           The **opendir**() and **fdopendir**() functions return a pointer to the
           directory stream.  On error, NULL is returned, and _errno_ is set to
           indicate the error.
    


## ERRORS



           **EACCES** Permission denied.
    
           **EBADF** _fd_ is not a valid file descriptor opened for reading.
    
           **EMFILE** The per-process limit on the number of open file
                  descriptors has been reached.
    
           **ENFILE** The system-wide limit on the total number of open files has
                  been reached.
    
           **ENOENT** Directory does not exist, or _name_ is an empty string.
    
           **ENOMEM** Insufficient memory to complete the operation.
    
           **ENOTDIR**
                  _name_ is not a directory.
    


## ATTRIBUTES



           For an explanation of the terms used in this section, see
           attributes(7).
           ┌──────────────────────────────────────┬───────────────┬─────────┐
           │ **Interface** │ **Attribute** │ **Value** │
           ├──────────────────────────────────────┼───────────────┼─────────┤
           │ **opendir**(), **fdopendir**()               │ Thread safety │ MT-Safe │
           └──────────────────────────────────────┴───────────────┴─────────┘
    


## STANDARDS



           POSIX.1-2008.
    


## STANDARDS



           **opendir**()
                  SVr4, 4.3BSD, POSIX.1-2001.
    
           **fdopendir**()
                  POSIX.1-2008.  glibc 2.4.
    


## NOTES



           Filename entries can be read from a directory stream using
           readdir(3).
    
           The underlying file descriptor of the directory stream can be
           obtained using dirfd(3).
    
           The **opendir**() function sets the close-on-exec flag for the file
           descriptor underlying the _DIR *_.  The **fdopendir**() 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 to **fdopendir**() will set the close-on-exec flag for
           the file descriptor, _fd_.
    


* * *