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:
Time when file data last accessed. Changed by the mknod(2), utimes(2), read(2) and readv(2) system calls.
Time when file data last modified. Changed by the mkdir(2), mkfifo(2), mknod(2), utimes(2), write(2) and writev(2) system calls.
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.
Time when the inode was created.
If _POSIX_SOURCE is not defined, the time-related fields are defined as:
#define st_atime st_atimespec.tv_sec
#define st_mtime st_mtimespec.tv_sec
#define st_ctime st_ctimespec.tv_sec
The size-related fields of the .Vt "struct stat" are as follows:
The file size in bytes.
The optimal I/O block size for the file.
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:
The user ID of the files owner.
The group ID of the file.
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:
Test for a block special file.
Test for a character special file.
Test for a directory.
Test for a pipe or FIFO special file.
Test for a symbolic link.
Test for a regular file.
Test for a socket.
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.