[Previous] [Contents] [Next]

closedir()

Close a directory

Synopsis:

#include <dirent.h>

int closedir( DIR *dirp );

Library:

libc

Description:

The closedir() function closes the directory specified by dirp, and frees the memory allocated by opendir().


Note: The result of using a directory stream after calling one of the exec*() or spawn*() family of functions is undefined. After a call to the fork() function, either the parent or the child (but not both) may continue processing the directory stream using the readdir() and rewinddir() functions. If both the parent and child processes use these functions, the result is undefined. Either or both processes may call the closedir() function.

Returns:

0
Success.
-1
An error occurred (errno is set).

Errors:

EBADF
dirp isn't an open directory stream.
EINTR
closedir() was interrupted by a signal.

Examples:

Get a list of files contained in the directory /home/kenny:

#include <stdio.h>
#include <dirent.h>
#include <stdlib.h>

int main( void )
{
    DIR *dirp;
    struct dirent *direntp;

    dirp = opendir( "/home/kenny" );
    if( dirp != NULL ) {
        for(;;) {
            direntp = readdir( dirp );
            if( direntp == NULL ) {
                break;
            }

            printf( "%s\n", direntp->d_name );
        }

        closedir( dirp );
        
        return EXIT_SUCCESS;
    }
    
    return EXIT_FAILURE;
}

Classification:

POSIX 1003.1

Safety:
Cancellation point Yes
Interrupt handler No
Signal handler No
Thread Yes

See also:

errno, opendir(), readdir(), readdir_r(), rewinddir()


[Previous] [Contents] [Next]