readdir(2)

NAZWA
readdir - odczytuje wpis w katalogu

BIBLIOTEKA
Standardowa biblioteka C (libc, -lc)

SKŁADNIA
#include <sys/syscall.h>           /* Definicja stałych SYS_* */
#include <unistd.h>

int syscall(SYS_readdir, unsigned int fd,
            struct old_linux_dirent *dirp, unsigned int count);

Uwaga: Brak definicji struct old_linux_dirent; zob. WERSJE.

OPIS
Nie jest to funkcja, która cię interesuje. Opis implementacji interfejsu zgodnego z POSIX w bibliotece C znajduje się w readdir(3). Niniejsza strona opisuje goły interfejs wywołania systemowego, który został zastąpiony przez getdents(2).

readdir() odczytuje jedną strukturę old_linux_dirent z katalogu, na który wskazuje deskryptor pliku fd, do bufora, na który wskazuje dirp. Argument count jest ignorowany; odczytywana jest co najwyżej jedna struktura old_linux_dirent.

Struktura old_linux_dirent jest zadeklarowana (prywatnie, w pliku jądra Linux fs/readdir.c) następująco:

    struct old_linux_dirent {
        unsigned long d_ino;     /* numer i-węzła */
        unsigned long d_offset;  /* offset do tego old_linux_dirent */
        unsigned short d_namlen; /* długość tego d_name */
        char  d_name[1];         /* nazwa pliku (zakończona znakiem NUL) */
    }

d_ino jest numerem i-węzła. d_off jest odległością od początku katalogu do tego wpisu old_linux_dirent. d_reclen jest rozmiarem d_name, nie licząc kończącego znaku NUL ('\0'). d_name jest zakończoną znakiem NUL nazwą pliku.

WARTOŚĆ ZWRACANA
Po pomyślnym zakończeniu zwracane jest 1. Po natrafieniu na koniec katalogu zwracane jest 0. Po błędzie zwracane jest -1 i ustawiane errno wskazując błąd.

BŁĘDY

EBADF
    Nieprawidłowy deskryptor fd.

EFAULT
    Argument wskazuje poza przestrzeń adresową wywołującego procesu.

EINVAL
    Bufor na wynik jest za mały.

ENOENT
    Nie ma takiego katalogu.

ENOTDIR
    Deskryptor pliku nie odnosi się do katalogu.

WERSJE
Konieczne jest samodzielne zdefiniowanie struktury old_linux_dirent. Powinno się jednak raczej korzystać z readdir(3).

To wywołanie systemowe nie istnieje na x86-64.

STANDARDY
Linux.

ZOBACZ TAKŻE
getdents(2), readdir(3)

TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika: Przemek Borys <pborys@dione.ids.pl>, Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 (https://www.gnu.org/licenses/gpl-3.0.html) lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.