getdents

NAME

getdents - get directory entries

SYNOPSIS

#include <unistd.h>
#include <linux/types.h>
#include <linux/dirent.h>
#include <linux/unistd.h>
#include <errno.h>
 I int getdents(unsigned int  fd , struct dirent * dirp , unsigned int  count );

DESCRIPTION

This is not the function you are interested in. Look at readdir(3) for the POSIX conforming C library interface. This page documents the bare kernel system call interface.
The system call R getdents () reads several dirent structures from the directory pointed at by fd into the memory area pointed to by R dirp . The parameter count is the size of the memory area.
The dirent structure is declared as follows:
struct dirent {
    long d_ino;                 /* inode number */
    off_t d_off;                /* offset to next dirent */
    unsigned short d_reclen;    /* length of this dirent */
    char d_name [NAME_MAX+1];   /* filename (null-terminated) */
}
d_ino is an inode number. d_off is the distance from the start of the directory to the start of the next R dirent . d_reclen is the size of this entire R dirent . d_name is a null-terminated filename.
This call supersedes readdir(2).

RETURN VALUE

On success, the number of bytes read is returned. On end of directory, 0 is returned. On error, -1 is returned, and errno is set appropriately.

ERRORS

EBADF
Invalid file descriptor R fd .
EFAULT
Argument points outside the calling process's address space.
EINVAL
Result buffer is too small.
ENOENT
No such directory.
ENOTDIR
File descriptor does not refer to a directory.

CONFORMING TO

SVr4.

NOTES

Glibc does not provide a wrapper for this system call; call it using syscall(2).

SEE ALSO