NOMBRE¶
readdir - lee una entrada de un directorio
SINOPSIS¶
#include <unistd.h>
#include <linux/dirent.h>
#include <linux/unistd.h>
_syscall3(int, readdir, uint, fd, struct dirent *, dirp, uint, count);
int readdir(unsigned int fd, struct dirent *dirp, unsigned int count);
DESCRIPCIÓN¶
Esta no es la función que buscaba. Mire
readdir(3) para ver la
interfaz de la biblioteca C conforme con POSIX. Esta página documenta la
interfaz desnuda con la llamada al sistema del núcleo, que puede cambiar,
y que es reemplazada por
getdents(2).
readdir lee una estructura
dirent del directorio al que apunta
fd y la almacena en el área de memoria apuntada por
dirp.
El parámetro
count es ignorado; como mucho se lee una estructura
dirent.
La estructura
dirent se declara como sigue:
struct dirent
{
long d_ino; /* número de nodo-í */
off_t d_off; /* desplazamiento hasta el dirent */
unsigned short d_reclen; /* longitud del d_name */
char d_name [NAME_MAX+1]; /* nombre de fichero
(acabado en nulo) */
}
d_ino es un número de nodo-í.
d_off es la distancia
desde el principio del directorio hasta este
dirent.
d_reclen es
el tamaño de
d_name, sin contar el carácter nulo del final.
d_name es un nombre de fichero, una cadena de caracteres terminada en
nulo.
VALOR DEVUELTO¶
En caso de éxito se devuelve 1. Si se alcanzó el final del directorio
se devuelve 0. Si hubo un error se devuelve -1 y la variable
errno se
modifica apropiadamente.
ERRORES¶
- EBADF
- Descriptor de fichero fd inválido.
- EFAULT
- El argumento señala fuera del espacio de direcciones
del proceso que realiza la llamada.
- EINVAL
- El buffer para el resultado es demasiado pequeño.
- ENOENT
- No existe el directorio.
- ENOTDIR
- El descriptor de fichero no se refiere a un
directorio.
Esta llamada al sistema es específica de Linux.
VÉASE TAMBIÉN¶
getdents(2),
readdir(3)