Syntax | #include <dirent.h> Optional #include <sys/types.h> (End) DIR *opendir(const char *dirname); DIR *fdopendir(int fd); |
Description | opendir() opens a directory stream corresponding to the directory named by dirname. The directory stream is positioned at the first entry. The type DIR , which is defined in dirent.h, represents a directory stream that is an ordered sequence of all directory entries in a special directory. Since the type DIR is implemented in POSIX using a file descriptor, applications can only open a maximum of {OPEN_MAX} files and directories.
If dirname cannot be accessed or is not a directory, or if not enough memory to hold a DIR structure or a buffer for the directory entries can be allocated with malloc() , a null pointer is returned. The fdopendir() function is equivalent to the opendir() function, with the difference that the directory is specified by the file descriptor fd instead of by a pathname. After a successful return from fdopendir() , the file descriptor is under system control. If an attempt is made to close the file descriptor or to change the status of the directory by functions other than closedir() , readdir() , rewinddir() or seekdir() , the behavior is undefined. closedir() also closes the file descriptor. |
Return val. | Pointer to a DIR object |
| if successful. |
Null pointer | if an error occurs. errno is set to indicate the error. |
Errors | opendir() and fdopendir() will fail if:
|
| EACCES
| Search permission is denied for the component of dirname or read permission is denied for dirname. |
| Extension |
| EFAULT
| dirname points outside the allocated address space of the process. |
| ELOOP
| Too many symbolic links were encountered in resolving dirname. (End) |
| EMFILE
| More than {OPEN_MAX} file descriptors are currently open in the calling process. |
| ENAMETOOLONG
|
| The length of the dirname argument exceeds {PATH_MAX} or a pathname component is longer than {NAME_MAX} . |
| ENFILE
| Too many file descriptors are currently open in the system. |
| ENOENT
| dirname points to the name of a file that does not exist or to an empty string. |
| ENOTDIR
| A component of dirname is not a directory. |
| In addition, fdopendir() fails if the following applies: |
| EBADF
| The fd parameter contains no valid file descriptor which is opened for reading. |
| ENOTDIR
| The file descriptor fd is not connected with a directory. |
Notes | opendir() should be used in conjunction with readdir() , closedir() and rewinddir() to examine the contents of the directory (see also readdir() ). This method is recommended for portability.
opendir() is executed only for POSIX files
|
See also | closedir() , readdir() , rewinddir() , dirent.h , sys/types.h , limits.h .
|