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 присваивается код ошибки.