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