struct stat {
dev_t st_dev; /* device */
ino_t st_ino; /* inode */
mode_t st_mode; /* protection */
nlink_t st_nlink; /* number of hard links */
uid_t st_uid; /* user ID of owner */
gid_t st_gid; /* group ID of owner */
dev_t st_rdev; /* device type (if inode device) */
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for filesystem I/O */
blkcnt_t st_blocks; /* number of blocks allocated */
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last status change */
};
| S_IFMT | 0170000 | bitmask for the file type bitfields |
| S_IFSOCK | 0140000 | socket |
| S_IFLNK | 0120000 | symbolic link |
| S_IFREG | 0100000 | regular file |
| S_IFBLK | 0060000 | block device |
| S_IFDIR | 0040000 | directory |
| S_IFCHR | 0020000 | character device |
| S_IFIFO | 0010000 | fifo |
| S_ISUID | 0004000 | set UID bit |
| S_ISGID | 0002000 | set GID bit (see below) |
| S_ISVTX | 0001000 | sticky bit (see below) |
| S_IRWXU | 00700 | mask for file owner permissions |
| S_IRUSR | 00400 | owner has read permission |
| S_IWUSR | 00200 | owner has write permission |
| S_IXUSR | 00100 | owner has execute permission |
| S_IRWXG | 00070 | mask for group permissions |
| S_IRGRP | 00040 | group has read permission |
| S_IWGRP | 00020 | group has write permission |
| S_IXGRP | 00010 | group has execute permission |
| S_IRWXO | 00007 | mask for permissions for others (not in group) |
| S_IROTH | 00004 | others have read permission |
| S_IWOTH | 00002 | others have write permisson |
| S_IXOTH | 00001 | others have execute permission |
| hex | name | ls | octal | description |
| f000 | S_IFMT | 170000 | mask for file type | |
| 0000 | 000000 | SCO out-of-service inode, BSD unknown type | ||
| SVID-v2 and XPG2 have both 0 and 0100000 for ordinary file | ||||
| 1000 | S_IFIFO | p| | 010000 | fifo (named pipe) |
| 2000 | S_IFCHR | c | 020000 | character special (V7) |
| 3000 | S_IFMPC | 030000 | multiplexed character special (V7) | |
| 4000 | S_IFDIR | d/ | 040000 | directory (V7) |
| 5000 | S_IFNAM | 050000 | XENIX named special file | |
| with two subtypes, distinguished by st_rdev values 1, 2: | ||||
| 0001 | S_INSEM | s | 000001 | XENIX semaphore subtype of IFNAM |
| 0002 | S_INSHD | m | 000002 | XENIX shared data subtype of IFNAM |
| 6000 | S_IFBLK | b | 060000 | block special (V7) |
| 7000 | S_IFMPB | 070000 | multiplexed block special (V7) | |
| 8000 | S_IFREG | - | 100000 | regular (V7) |
| 9000 | S_IFCMP | 110000 | VxFS compressed | |
| 9000 | S_IFNWK | n | 110000 | network special (HP-UX) |
| a000 | S_IFLNK | l@ | 120000 | symbolic link (BSD) |
| b000 | S_IFSHAD | 130000 | Solaris shadow inode for ACL (not seen by userspace) | |
| c000 | S_IFSOCK | s= | 140000 | socket (BSD; also "S_IFSOC" on VxFS) |
| d000 | S_IFDOOR | D> | 150000 | Solaris door |
| e000 | S_IFWHT | w% | 160000 | BSD whiteout (not used for inode) |
| 0200 | S_ISVTX | 001000 | `sticky bit': save swapped text even after use (V7) | |
| reserved (SVID-v2) | ||||
| On non-directories: don't cache this file (SunOS) | ||||
| On directories: restricted deletion flag (SVID-v4.2) | ||||
| 0400 | S_ISGID | 002000 | set group ID on execution (V7) | |
| for directories: use BSD semantics for propagation of gid | ||||
| 0400 | S_ENFMT | 002000 | SysV file locking enforcement (shared w/ S_ISGID) | |
| 0800 | S_ISUID | 004000 | set user ID on execution (V7) | |
| 0800 | S_CDF | 004000 | directory is a context dependent file (HP-UX) |