readdir - считывает данные каталога
НАЗВАНИЕreaddir - считывает данные каталога
СИНТАКСИС
#include
#include
#include
_syscall3(int, readdir, uint, fd, struct dirent *, dirp, uint, count);
int readdir(unsigned int fd, struct dirent *dirp, unsigned int count);
ОПИСАНИЕ
Это не та функция, которая может вызвать у Вас интерес.
См. readdir(3), в которой описан совместимый с POSIX
интерфейс C-библиотеки. Эта страница описывает интерфейс
прямого системного вызова ядра, который может меняться. Он
может быть легко заменен getdents(2).
readdir записывает одну структуру dirent из каталога,
заданного fd , в область памяти, указанную dirp. Параметр
count игнорируется; почти всегда считывается одна
структура dirent.
Структура dirent определена следующим образом:
struct dirent
{
long d_ino; /* номер inode */
off_t d_off; /* смещение на dirent */
unsigned short d_reclen; /* длина d_name */
char d_name [NAME_MAX+1]; /* имя файла (оканчивающееся нулем) */
}
d_ino - это номер inode. d_off - смещение записи dirent
от начала каталога. d_reclen - длина d_name без учета
последнего нуля. d_name - оканчивающееся нулем имя файла.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При удачном завершении вызова возвращаемое значение равно.
В конец каталога возвращается 0. При ошибке возвращается
-1, а переменной errno присваивается номер ошибки.
КОДЫ ОШИБОК
EBADF Неправильный описатель файла fd.
EFAULT Аргумент указывает на адрес каталога, а этот
каталог находится за пределами адресного
пространства вызывающего процесса.
EINVAL Буфер результата слишком мал.
ENOENT Каталог не найден.
ENOTDIR
Описатель файла не относится к каталогу.
СООТВЕТСТВИЕ СТАНДАРТАМ
Эта функция специфична для Linux. Не рекомендуется
использовать ее в программах, переносимых в другие
системы.