GETDENTS(2)
GETDENTS(2)
НАЗВАНИЕ
getdents - чтение элементов каталога и преобразование в системно-независимый формат
СИНТАКСИС
#include <sys/dirent.h>
int getdents (fildes, buf, nbyte) int fildes; char *buf; unsigned nbyte;
ОПИСАНИЕ
Аргумент fildes - это дескриптор файла, полученный от системного вызова или .
Системный вызов пытается прочитать nbyte байт из каталога, ассоциированного с дескриптором fildes, переформатировать их в не зависящие от типа файловой системы элементы каталога и поместить результат в буфер, заданный указателем buf. Так как не зависящие от типа файловой системы элементы каталога имеют переменную длину, в большинстве случаев фактическое число возвращенных байт будет строго меньше, чем nbyte.
Не зависящий от типа файловой системы формат элемента каталога задается структурой dirent. Она описана в .
При работе с устройствами, допускающими позиционирование, чтение начинается с позиции в файле, заданной указателем файла, соответствующего дескриптору fildes. После завершения системного вызова getdents указатель файла получает приращение и указывает на следующий элемент каталога.
Данный системный вызов был разработан для реализации функции [см. ]; не следует использовать его для других целей.
Системный вызов getdents завершается неудачей, если выполнено хотя бы одно из следующих условий:
[EBADF] Аргумент fildes не является корректным дескриптором файла, открытого на чтение. [EFAULT] Аргумент buf указывает за пределы отведенного процессу адресного пространства. [EINVAL] Значение аргумента nbyte меньше длины одного элемента каталога. [ENOENT] Текущий указатель файла для каталога установлен не на корректный элемент. [ENOLINK] Аргумент fildes указывает на удаленный компьютер, связи с которым в данный момент нет. [ENOTDIR] Дескриптор fildes ассоциирован не с каталогом. [EIO] Во время доступа к файловой системе произошла ошибка ввода/вывода.
СМ. ТАКЖЕ
, .
ДИАГНОСТИКА
При успешном завершении возвращается неотрицательное целое число, равное количеству фактически прочитанных байт. Значение 0 обозначает, что был достигнут конец каталога. В случае ошибки возвращается -1, а переменной errno присваивается код ошибки.