Открыть директорию
#include <dirent.h>DIR * opendir( const char *dirname );
libc
Функция opendir() используется вместе с readdir() и closedir() для получения списка имён файлов, содержащихся в директории dirname.
Есть возможность чтения более одной директории, используя функции opendir(), readdir(), rewinddir() и closedir().
Использование потока директории после работы функций exec*() или spawn*() приводит к неопределённому поведению. После вызова функции fork() либо родительский, либо дочерний (но только один) процесс может продолжить обработку потока директории, используя функции readdir() и rewinddir(). Использование потока директории и родительским, и дочерним процессами приводит к неопределённому поведению. Использовать closedir() могут и родительский, и дочерний процессы. |
Указатель на структуру DIR
, которую необходимо использовать для получения информации о файлах внутри директории dirname с помощью функции readdir().
Если возникла ошибка, функция возвращает NULL
, код ошибки записывается в errno.
PATH_MAX
, либо имя директории превышает NAME_MAX
. Получение списка имён файлов, содержащихся в директории /home/fred
:
#include <stdio.h>#include <stdlib.h>#include <dirent.h>int main( void ){DIR *dirp;struct dirent *direntp;dirp = opendir( "/home/fred" );if ( dirp == NULL ){perror( "can't open /home/fred" );} else {for ( ; ; ){direntp = readdir( dirp );if ( direntp == NULL )break;printf( "%s\n", direntp->d_name );}closedir( dirp );}return (EXIT_SUCCESS);}
POSIX 1003.1
closedir(), struct dirent, errno, readdir(), readdir_r(), rewinddir(), seekdir(), telldir()
Предыдущий раздел: Описание API системной библиотеки