Data structure for information about a file or directory
The definition of struct stat is complicated; see <sys/stat.h> for details.
The stat structure is used to store information about a file or directory. In QNX Neutrino 7.0 or later, there are several forms of the stat structure:
The struct stat is defined to be one of the above, depending on which architecture you compile your code for. You can use stat_convert_form() to convert one form of the structure to another.
The members include:
For a: | This field is: |
---|---|
Regular file | The size of the object, in bytes |
Symbolic link | The length, in bytes, of the pathname contained in the symbolic link |
Shared memory object | The length, in bytes |
Typed memory object | The length, in bytes |
These macros manipulate device IDs:
For special named files (S_IFNAM), the subtype is encoded in st_rdev:
Three-digit octal modes include the access permissions; some utilities, such as find, use six-digit octal modes that include the rest:
Name | Octal value | Meaning |
---|---|---|
S_IFBLK | 060000 | Block special file |
S_IFCHR | 020000 | Character special file |
S_IFDIR | 040000 | Directory |
S_IFIFO | 010000 | FIFO special file |
S_IFLNK | 120000 | Symbolic link |
S_IFNAM | 050000 | Special named file |
S_IFREG | 100000 | Regular file |
S_IFSOCK | 140000 | Socket |
_S_ACL_EXT | 200000 | (QNX Neutrino 6.6 or later) The file has an extended ACL. For more information, see Access Control Lists (ACLs) in the Working with Files chapter of the QNX Neutrino User's Guide, and the Working with ACLs chapter of the QNX Neutrino Programmer's Guide. |
S_ISUID | 004000 | Set user ID on execution. The process's effective user ID is set to the file's owner when the file is run as a program. On a regular file, this bit should be cleared on any write. |
S_ISGID | 002000 | Set group ID on execution. The process's effective group ID is set to the file's group when the file is run as a program. On a regular file, this bit should be cleared on any write. |
S_ISVTX | 001000 | Sticky bit |
S_IRUSR | 000400 | Owner has read permission |
S_IWUSR | 000200 | Owner has write permission |
S_IXUSR | 000100 | Owner has execute/search permission |
S_IRWXU | 000700 | Owner has read, write, and execute/search permissions; a bitwise inclusive OR of S_IRUSR, S_IWUSR and S_IXUSR |
S_IRGRP | 000040 | Group has read permission |
S_IWGRP | 000020 | Group has write permission |
S_IXGRP | 000010 | Group has execute/search permission |
S_IRWXG | 000070 | Group has read, write, and execute/search permissions; a bitwise inclusive OR of S_IRGRP, S_IWGRP and S_IXGRP |
S_IROTH | 000004 | Others have read permission |
S_IWOTH | 000002 | Others have write permission |
S_IXOTH | 000001 | Others have execute/search permission |
S_IRWXO | 000007 | Others have read, write, and execute/search permissions; a bitwise inclusive OR of S_IROTH, S_IWOTH and S_IXOTH |
S_IFMT is a mask that isolates the file-type bits. For information about macros that you can use to check the file type, see Macros, below.
The following bits define miscellaneous permissions used by other implementations:
Bit | Equivalent |
---|---|
S_IEXEC | S_IXUSR |
S_IREAD | S_IRUSR |
S_IWRITE | S_IWUSR |
Macros
The following macros test whether a file is of a specified type. The value m supplied to the macros is the value of the st_mode field of a stat structure. The macros evaluate to a nonzero value if the test is true, and zero if the test is false.
These macros test whether a file is of the specified type. The value of the buf argument supplied to the macros is a pointer to a stat structure. The macro evaluates to a nonzero value if the specified object is implemented as a distinct file type and the specified file type is contained in the stat structure referenced by the pointer buf. Otherwise, the macro evaluates to zero.