readdir(2) | System Calls Manual | readdir(2) |
ИМЯ
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.
ОШИБКИ
ВЕРСИИ
Структуру old_linux_dirent нужно определить самостоятельно. Однако лучше использовать readdir(3).
Этот системный вызов отсутствует на x86-64.
СТАНДАРТЫ
Linux.
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД
Русский перевод этой страницы руководства разработал aereiae <aereiae@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitriy S. Seregin <dseregin@59.ru>, Katrin Kutepova <blackkatelv@gmail.com>, Lockal <lockalsash@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Баринов Владимир и Иван Павлов <pavia00@gmail.com>
Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику по его адресу электронной почты или по адресу списка рассылки русских переводчиков.
2 мая 2024 г. | Linux man-pages 6.8 |