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