#include <sys/stat.h> and into which information is placed concerning the file.
The fields of
struct stat
related to the file system are as follows:
st_dev
|
The numeric ID of the device containing the file.
|
st_ino
|
The file’s inode number.
|
st_nlink
|
|
The number of hard links to the file.
|
The
st_dev
and
st_ino
fields together identify the file uniquely within the system.
The time-related fields of
struct stat
are as follows:
st_atime
|
Time when file data last accessed.
Changed by the .Xr utimes 2,
read
and
readv
system calls.
|
st_mtime
|
Time when file data last modified.
|
st_ctime
|
Time when file status was last changed (inode data modification).
|
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
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
struct stat
are as follows:
st_uid
|
The user ID of the file’s 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
|