| Сервер поддерживается Центром Информационных Технологий (095) 932-9212, 932-9213, 939-0783 E-mail: info@citforum.ru

Сервер содержит море(!) аналитической информации | CIT Forum CD-ROM

### GETDENTS(2)

НАЗВАНИЕ
getdents - чтение элементов каталога и преобразование в системно-независимый формат

СИНТАКСИС

            #include <sys/dirent.h>

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

Comments: info@citmgu.ru Designed by Andrey Novikov Copyright © CIT