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
. On GNU/Linux and GNU/Hurd systems and most POSIX systems, for most files this the same as thest_ino
member thatstat
will 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 char
because that is the integer type of the appropriate size. This member is a BSD extension. The symbol_DIRENT_HAVE_D_NAMLEN
is defined if this member is available.unsigned 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. Only some filesystems have full support to return the type of the file, others might always return this value.
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.
DT_LNK
- A symbolic link.
This member is a BSD extension. The symbol
_DIRENT_HAVE_D_TYPE
is defined if this member is available. On systems where it is used, it corresponds to the file type bits in thest_mode
member ofstruct statbuf
. If the value cannot be determine the member value is DT_UNKNOWN. These two macros convert betweend_type
values andst_mode
values: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_reclen
available 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_fileno
field.File attributes such as size, modification times etc., are part of the file itself, not of any particular directory entry. See File Attributes.