NAME |LIBRARY |SYNOPSIS |DESCRIPTION |RETURN VALUE |ERRORS |VERSIONS |STANDARDS |SEE ALSO |COLOPHON | |
readdir(2) System Calls Manualreaddir(2)readdir - read directory entry
Standard C library (libc,-lc)
#include <sys/syscall.h>/* Definition ofSYS_*constants */#include <unistd.h>int syscall(SYS_readdir, unsigned intfd,struct old_linux_dirent *dirp, unsigned intcount);Note: There is no definition ofstruct old_linux_dirent; see VERSIONS.
This is not the function you are interested in. Look atreaddir(3) for the POSIX conforming C library interface. This page documents the bare kernel system call interface, which is superseded bygetdents(2).readdir() reads oneold_linux_dirent structure from the directory referred to by the file descriptorfd into the buffer pointed to bydirp. The argumentcount is ignored; at most oneold_linux_dirent structure is read. Theold_linux_dirent structure is declared (privately in Linux kernel filefs/readdir.c) as follows: struct old_linux_dirent { unsigned long d_ino; /* inode number */ unsigned long d_offset; /* offset to thisold_linux_dirent */ unsigned short d_namlen; /* length of thisd_name */ char d_name[1]; /* filename (null-terminated) */ }d_ino is an inode number.d_offset is the distance from the start of the directory to thisold_linux_dirent.d_reclen is the size ofd_name, not counting the terminating null byte ('\0').d_name is a null-terminated filename.On success, 1 is returned. On end of directory, 0 is returned. On error, -1 is returned, anderrno is set to indicate the error.
EBADFInvalid file descriptorfd.EFAULTArgument points outside the calling process's address space.EINVALResult buffer is too small.ENOENTNo such directory.ENOTDIR File descriptor does not refer to a directory.
You will need to define theold_linux_dirent structure yourself. However, probably you should usereaddir(3) instead. This system call does not exist on x86-64.
Linux.
getdents(2),readdir(3)
This page is part of theman-pages (Linux kernel and C library user-space interface documentation) project. Information about the project can be found at ⟨https://www.kernel.org/doc/man-pages/⟩. If you have a bug report for this manual page, see ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩. This page was obtained from the tarball man-pages-6.15.tar.gz fetched from ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on 2025-08-11. If you discover any rendering problems in this HTML version of the page, or you believe there is a better or more up- to-date source for the page, or you have corrections or improvements to the information in this COLOPHON (which isnot part of the original manual page), send a mail to man-pages@man7.orgLinux man-pages 6.15 2025-05-17readdir(2)Pages that refer to this page:fanotify_mark(2), getdents(2), read(2), syscalls(2), seekdir(3), fanotify(7)
HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface. For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere. Hosting byjambit GmbH. | ![]() |