Next: Opening a Directory, Up: Accessing Directories
This section describes what you find in a single directory entry, as you might obtain it from a directory stream. All the symbols are declared in the header file dirent.h.
This is a structure type used to return information about directory entries. It contains the following fields:
char d_name[]- This is the null-terminated file name component. This is the only field you can count on in all POSIX systems.
ino_t d_fileno- This is the file serial number. For BSD compatibility, you can also refer to this member as
d_ino. In the GNU system and most POSIX systems, for most files this the same as thest_inomember thatstatwill return for the file. See File Attributes.unsigned char d_namlen- This is the length of the file name, not including the terminating null character. Its type is
unsigned charbecause that is the integer type of the appropriate sizeunsigned char d_type- This is the type of the file, possibly unknown. The following constants are defined for its value:
DT_UNKNOWN- The type is unknown. On some systems this is the only value returned.
DT_REG- A regular file.
DT_DIR- A directory.
DT_FIFO- A named pipe, or FIFO. See FIFO Special Files.
DT_SOCK- A local-domain socket.
DT_CHR- A character device.
DT_BLK- A block device.
This member is a BSD extension. The symbol
_DIRENT_HAVE_D_TYPEis defined if this member is available. On systems where it is used, it corresponds to the file type bits in thest_modemember ofstruct statbuf. If the value cannot be determine the member value is DT_UNKNOWN. These two macros convert betweend_typevalues andst_modevalues:This structure may contain additional members in the future. Their availability is always announced in the compilation environment by a macro names
_DIRENT_HAVE_D_xxx where xxx is replaced by the name of the new member. For instance, the memberd_reclenavailable on some systems is announced through the macro_DIRENT_HAVE_D_RECLEN.When a file has multiple names, each name has its own directory entry. The only way you can tell that the directory entries belong to a single file is that they have the same value for the
d_filenofield.File attributes such as size, modification times etc., are part of the file itself, not of any particular directory entry. See File Attributes.