GETDENTS(2)

NOMBRE
getdents - obtiene las entradas de un directorio

SINOPSIS
#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);

DESCRIPCIÓN
getdents lee varias estructuras dirent del directorio señalado por el puntero fd en el área de memoria señalada por dirp. El parámetro count es el tamaño del área de memoria.

La estructura dirent se declara de la siguente manera:

    struct dirent
    {
        long d_ino;               /* número de nodo-i */
        off_t d_off;              /* desplazamiento al próximo dirent */
        unsigned short d_reclen;  /* longitud de este dirent */
        char d_name [NAME_MAX+1]; /* Nombre del fichero (terminado en NUL) */
    }

d_ino es un número de nodo-i. d_off es la distancia desde el principio del directorio al comienzo del próximo dirent. d_reclen es el tamaño de todo el dirent. d_name es un nombre de fichero terminado en NUL (el carácter de código 0).

Esta llamada sustituye a readdir(2).

VALOR DEVUELTO
En caso de éxito de regresa el número de bytes leídos. Si se llega al final del directorio se devuelve 0. En caso de error se devuelve -1, y en la variable errno se pone un valor apropiado.

ERRORES

EBADF
    Descriptor de fichero inválido fd.

EFAULT
    El argumento apunta afuera del espacio de direcciones del proceso llamador.

EINVAL
    El búfer del resultado es demasiado pequeño.

ENOENT
    El directorio no existe.

ENOTDIR
    El descriptor de fichero no se refiere a un directorio.

CONFORME A
SVr4, SVID. SVr4 documenta las condiciones de error adicionales ENOLINK y EIO.

VÉASE TAMBIÉN
readdir(2), readdir(3).