readdir(3) Library Functions Manual readdir(3) readdir - (libc -lc) #include struct dirent *readdir(DIR *dirp); readdir() dirent dirp. NULL . glibc dirent : struct dirent { ino_t d_ino; /* */ off_t d_off; /* */ unsigned short d_reclen; /* */ unsigned char d_type; /* */ char d_name[256]; /* null */ }; dirent POSIX.1 .d_name .d_ino. VERSIONS. dirent : .d_ino inode readdir(). .d_ino .st_ino stat(2) : .d_ino inode .st_ino inode . .d_off .d_off telldir(3) . .d_off . telldir(3). .d_reclen () . VERSIONS. .d_type lstat(2) . (_DEFAULT_SOURCE glibc 2.19 _BSD_SOURCE glibc 2.19 ) glibc .d_type: DT_BLK . DT_CHR . DT_DIR . DT_FIFO (FIFO). DT_LNK . DT_REG . DT_SOCK UNIX. DT_UNKNOWN . ( : Btrfs ext2 ext3 ext4) .d_type. DT_UNKNOWN . .d_name VERSIONS. readdir() readdir() . readdir() dirent. ( free(3).) NULL errno. NULL errno . errno readdir() errno NULL. EBADF dirp . attributes(7). +------+------------------------------------+--------------------------+ || | | +------+------------------------------------+--------------------------+ |readdir()| | MT-Unsafe race:dirstream | | | | | +------+------------------------------------+--------------------------+ POSIX.1 (POSIX.1-2008) readdir() . ( glibc) readdir() . readdir() readdir_r(3). POSIX.1 readdir() . .d_name ( XSI) .d_ino POSIX.1. Linux .d_type BSD. . glibc POSIX.1 _DIRENT_HAVE_D_NAMLEN _DIRENT_HAVE_D_RECLEN _DIRENT_HAVE_D_OFF _DIRENT_HAVE_D_TYPE . .d_name dirent glibc .d_name . : .d_name. POSIX char d_name[] NAME_MAX ('\0'). POSIX.1 . sizeof(.d_name) strlen(.d_name) . ( char d_name[1]!) sizeof(struct dirent) .d_name . fpathconf(fd, _PC_NAME_MAX) 255 ( CIFS Windows SMB) ( ) .d_name . .d_reclen glibc dirent . POSIX.1-2008. POSIX.1-2001 SVr4 4.3BSD. opendir(3). readdir() . getdents(2), read(2), closedir(3), dirfd(3), ftw(3), offsetof(3), opendir(3), readdir_r(3), rewinddir(3), scandir(3), seekdir(3), telldir(3) 3 . . : . 6.18 8 2026 readdir(3)