readdir

READDIR(2)               Руководство программиста Linux               READDIR(2)



ИМЯ
       readdir - читает элемент каталога

ОБЗОР
       int readdir(unsigned int fd, struct old_linux_dirent *dirp,
                   unsigned int count);

       Замечание:В glibc нет обёрточной функции для данного системного вызова;
       смотрите ЗАМЕЧАНИЯ.

ОПИСАНИЕ
       Эта не та функция, которая должна представлять для вас интерес. Смотрите
       описание функции readdir(3), которая является интерфейсом библиотеки
       языка C, соответствующим стандарту POSIX. В этой странице описан
       минимальный интерфейс системного вызова ядра, который заменён на
       getdents(2).

       Вызов readdir() читает структуру old_linux_dirent из каталога, заданного
       файловым дескриптором fd, в буфер, указываемый в dirp. Аргумент count
       игнорируется; всегда считывается только одна структура old_linux_dirent.

       Структура old_linux_dirent определена следующим образом:

           struct old_linux_dirent {
               long  d_ino;              /* номер inode */
               off_t d_off;              /* смещение на данную old_linux_dirent */
               unsigned short d_reclen;  /* длина данной d_name */
               char  d_name[NAME_MAX+1]; /* имя файла (завершается null) */
           }

       Значением d_ino является номер inode В d_off задаётся смещение данной
       old_linux_dirent от начала каталога. В d_reclen задаётся размер d_name
       без учета завершающего байта null ('\0'). В d_name указывается имя файла,
       завершающееся null.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
       При успешном выполнении возвращается 1. Если каталог закончился
       возвращается 0. При ошибке возвращается -1, а переменной errno
       присваивается номер ошибки.

ОШИБКИ
       EBADF  Неверный файловый дескриптор fd.

       EFAULT Аргумент указывает за пределы адресного пространства вызывающего
              процесса.

       EINVAL Буфер результата слишком мал.

       ENOENT Заданный каталог не существует.

       ENOTDIR
              Файловый дескриптор указывает не на каталог.

СООТВЕТСТВИЕ СТАНДАРТАМ
       Данный вызов есть только в Linux.

ЗАМЕЧАНИЯ
       В glibc нет обёртки для данного системного вызова; запускайте его с
       помощью syscall(2). Структуру old_linux_dirent нужно определить
       самостоятельно. Однако лучше использовать readdir(3).

       Этот системный вызов отсутствует на x86-64.

СМОТРИТЕ ТАКЖЕ
       getdents(2), readdir(3)



Linux                              2013-06-21                         READDIR(2)