4.2. stat, fstat, and lstat FunctionsThe discussion in this chapter centers around the three stat functions and the information they return.[View full width]#include <sys/stat.h> int stat(const char *restrict pathname , struct ![]() int fstat(int filedes , struct stat *buf ); int lstat(const char *restrict pathname , struct ![]() |
All three return: 0 if OK, 1 on error |
mode_t st_mode; /* file type & mode (permissions) */
ino_t st_ino; /* i-node number (serial number) */
dev_t st_dev; /* device number (file system) */
dev_t st_rdev; /* device number for special files */
nlink_t st_nlink; /* number of links */
uid_t st_uid; /* user ID of owner */
gid_t st_gid; /* group ID of owner */
off_t st_size; /* size in bytes, for regular files */
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last file status change */
blksize_t st_blksize; /* best I/O block size */
blkcnt_t st_blocks; /* number of disk blocks allocated */
};
The st_rdev, st_blksize, and st_blocks fields are not required by POSIX.1. They are defined as XSI extensions in the Single UNIX Specification.Note that each member is specified by a primitive system data type (see Section 2.8). We'll go through each member of this structure to examine the attributes of a file.The biggest user of the stat functions is probably the ls -l command, to learn all the information about a file.