ОБЗОР
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
- Файловый дескриптор указывает не на каталог.