fdopendir - открывает каталог
fdopendir(3)
открывает каталог
Other Alias
opendir
ОБЗОР
#include <sys/types.h>
#include <dirent.h>
DIR *opendir(const char *name);
DIR *fdopendir(int fd);
Требования макроса тестирования свойств для glibc
(см. feature_test_macros(7)):
fdopendir():
Начиная с glibc 2.10:
_XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
До glibc 2.10:
_GNU_SOURCE
ОПИСАНИЕ
Функция
opendir() открывает поток каталога, соответствующий каталогу с
именем
name, и возвращает указатель на поток каталога. Поток
устанавливается на первую запись в каталоге.
Функция fdopendir() похожа на opendir(), но возвращает поток каталога
для каталога, на который ссылается открытый файловый дескриптор fd. После
успешного вызова fdopendir(), дескриптор fd используется только внутри
реализации и не должен использоваться в приложении.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функции
opendir() и
fdopendir() возвращают указатель на поток
каталога. В случае ошибки возвращается NULL, а
errno присваивается
соответствующее значение.
ОШИБКИ
EACCES
Доступ запрещен.
EBADF
Значение fd не является подходящим файловым дескриптором, открытым для
чтения.
EMFILE
Было достигнуто ограничение по количеству открытых файловых дескрипторов на
процесс.
ENFILE
Достигнуто максимальное количество открытых файлов в системе.
ENOENT
Каталог не существует, либо name содержит пустую строку.
ENOMEM
Недостаточно памяти для завершения операции.
ENOTDIR
Значение name не является каталогом.
ВЕРСИИ
Функция
fdopendir() доступна в glibc начиная с версии 2.4.
АТРИБУТЫ
Описание терминов данного раздела смотрите в
attributes(7).
Интерфейс Атрибут Значение
opendir(),
fdopendir()
безвредность в потоках: безвредно (MT-Safe)
СООТВЕТСТВИЕ СТАНДАРТАМ
Функция
opendir() присутствует в SVr4, 4.3BSD и описана в стандарте
POSIX.1-2001. Функция
fdopendir() описана в POSIX.1-2008.
ЗАМЕЧАНИЯ
Задействованный файловый дескриптор потока каталога может быть получен в
помощью
dirfd(3).
Функция opendir() устанавливает флаг close-on-exec для файлового
дескриптора, указывающего на DIR *. Функция fdopendir() оставляет флаг
close-on-exec не изменённым для файлового дескриптора fd. В POSIX.1-200x
нет точного определения на этот счет, хотя успешный вызов fdopendir()
установит флаг close-on-exec для файлового дескриптора fd.