Manpages

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).