ИМЯ
readdir - читает элемент каталогаLIBRARY
Standard C library ( libc, -lc)СИНТАКСИС
#include <sys/syscall.h> /* определения констант SYS_* */ #include <unistd.h>
int syscall(SYS_readdir, unsigned int fd, struct old_linux_dirent *dirp, unsigned int count);Note: There is no definition of struct old_linux_dirent; see NOTES.
ОПИСАНИЕ
Эта не та функция, которая должна представлять для вас интерес. Смотрите описание функции readdir(3), которая является интерфейсом библиотеки языка C, соответствующим стандарту POSIX. В этой странице описан минимальный интерфейс системного вызова ядра, который заменён на getdents(2). Вызов readdir() читает структуру old_linux_dirent из каталога, заданного файловым дескриптором fd, в буфер, указываемый в dirp. Аргумент count игнорируется; всегда считывается только одна структура old_linux_dirent. Структура old_linux_dirent определена (в файле ядра Linux fs/readdir.c, недоступна извне) следующим образом:struct old_linux_dirent { unsigned long d_ino; /* номер иноды */ unsigned long d_offset; /* смещение на данную old_linux_dirent */ unsigned short d_namlen; /* длина данной d_name */ char d_name[1]; /* имя файла (с null в конце) */ }
d_ino is an inode number. d_offset is the distance from the start of the directory to this old_linux_dirent. d_reclen is the size of d_name, not counting the terminating null byte ('\0'). d_name is a null-terminated filename.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
On success, 1 is returned. On end of directory, 0 is returned. On error, -1 is returned, and errno is set to indicate the error.ОШИБКИ
- EBADF
- Неверный файловый дескриптор fd.
- EFAULT
- Аргумент указывает за пределы адресного пространства вызывающего процесса.
- EINVAL
- Буфер результата слишком мал.
- ENOENT
- Заданный каталог не существует.
- ENOTDIR
- Файловый дескриптор указывает не на каталог.
СТАНДАРТЫ
Данный вызов есть только в Linux.ЗАМЕЧАНИЯ
Структуру old_linux_dirent нужно определить самостоятельно. Однако лучше использовать readdir(3). Этот системный вызов отсутствует на x86-64.СМ. ТАКЖЕ
getdents(2), readdir(3)ПЕРЕВОД
Русский перевод этой страницы руководства был сделан aereiae <[email protected]>, Azamat Hackimov <[email protected]>, Dmitriy S. Seregin <[email protected]>, Katrin Kutepova <[email protected]>, Lockal <[email protected]>, Yuri Kozlov <[email protected]>, Баринов Владимир и Иван Павлов <[email protected]> Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на [email protected]5 февраля 2023 г. | Linux man-pages 6.03 |