The st_dev and st_ino fields together identify the file uniquely within the system.
The time-related fields of .Vt "struct stat" are as follows:
st_atime
Time when file data last accessed. Changed by the mknod(2), utimes(2), read(2) and readv(2) system calls.
st_mtime
Time when file data last modified. Changed by the mkdir(2), mkfifo(2), mknod(2), utimes(2), write(2) and writev(2) system calls.
st_ctime
Time when file status was last changed (inode data modification). Changed by the chflags(2), chmod(2), chown(2), creat(2), link(2), mkdir(2), mkfifo(2), mknod(2), rename(2), rmdir(2), symlink(2), truncate(2), unlink(2), utimes(2), write(2) and writev(2) system calls.
st_birthtime
Time when the inode was created.
If _POSIX_SOURCE is not defined, the time-related fields are defined as:
#ifndef _POSIX_SOURCE
#define st_atime st_atimespec.tv_sec
#define st_mtime st_mtimespec.tv_sec
#define st_ctime st_ctimespec.tv_sec
#endif
The size-related fields of the .Vt "struct stat" are as follows:
st_size
The file size in bytes.
st_blksize
The optimal I/O block size for the file.
st_blocks
The actual number of blocks allocated for the file in 512-byte units. As short symbolic links are stored in the inode, this number may be zero.
The access-related fields of .Vt "struct stat" are as follows:
st_uid
The user ID of the files owner.
st_gid
The group ID of the file.
st_mode
Status of the file (see below).
The status information word st_mode has the following bits:
#define S_IFMT 0170000 /* type of file */
#define S_IFIFO 0010000 /* named pipe (fifo) */
#define S_IFCHR 0020000 /* character special */
#define S_IFDIR 0040000 /* directory */
#define S_IFBLK 0060000 /* block special */
#define S_IFREG 0100000 /* regular */
#define S_IFLNK 0120000 /* symbolic link */
#define S_IFSOCK 0140000 /* socket */
#define S_IFWHT 0160000 /* whiteout */
#define S_ISUID 0004000 /* set user id on execution */
#define S_ISGID 0002000 /* set group id on execution */
#define S_ISVTX 0001000 /* save swapped text even after use */
#define S_IRUSR 0000400 /* read permission, owner */
#define S_IWUSR 0000200 /* write permission, owner */
#define S_IXUSR 0000100 /* execute/search permission, owner */
For a list of access modes, see .In sys/stat.h , access(2) and chmod(2). The following macros are available to test whether a st_mode value passed in the m argument corresponds to a file of the specified type:
S_ISBLK m
Test for a block special file.
S_ISCHR m
Test for a character special file.
S_ISDIR m
Test for a directory.
S_ISFIFO m
Test for a pipe or FIFO special file.
S_ISLNK m
Test for a symbolic link.
S_ISREG m
Test for a regular file.
S_ISSOCK m
Test for a socket.
S_ISWHT m
Test for a whiteout.
The macros evaluate to a non-zero value if the test is true or to the value 0 if the test is false.