1. Dependent header Files
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
2. Function definition:
By passing in the file path, the struct stat struct pointer
int stat (const char *path, struct stat *buf);
Gets the properties of the file with the file descriptor. This action when the file is opened
int fstat (int fd, struct stat *buf);
Gets the properties of the file with the file descriptor. This action when the file is opened
int Lstat (const char *path, struct stat *buf);
Description: Execution successfully returned 0, failure returned-1, error code stored in errno
Attention:
Given a path
The A:stat function returns a structure of information related to this named file
The B:fstat function obtains the file information that has been opened on the descriptor Filedes
The C:lstat function is similar to stat, but when a named file is a symbolic connection, LSTAT returns information about the symbolic connection, not the file referenced by this symbolic link
3. The function of these functions is to return information about a file;
A:stat has both the command and the same name function, which is used to obtain the main information in the inode of the file, stat-Trace symbolic link
B:lstat do not track symbolic links
4.stat Inside Time discrimination
Atime (last accessed time)
Mtime (last modified): Refers to the time when the contents of the file were last changed
CTime (Last Modified time): Refers to the recent change Innode time, to note that mtime information is one of the innode, so once it is modified, this item will also be modified
5. All of these system calls return a stat structure that includes the following:
struct STAT {
dev_t St_dev; /* ID of device containing file device number */
ino_t St_ino; /* Inode Number Node # */
mode_t St_mode; /* Protection file type and access permissions */
nlink_t St_nlink; /* Number of hard links attached to the file, the file value is just 1*/
uid_t St_uid; /* User ID of owner users id*/
gid_t St_gid; /* Group ID of the owner group id*/
dev_t St_rdev; /* Device ID (if special file) (device type) If this file tail is a device file, its device number */
off_t st_size; /* Total size, in bytes file bytes (file size) */
blksize_t st_blksize; /* BlockSize for filesystem I/O block size (file system I/o buffer size), type unsigned long type */
blkcnt_t st_blocks; /* Number of 512B blocks allocated, allocated 512 bytes of block, type unsigned long type */
time_t St_atime; /* Date Last access time */
time_t St_mtime; /* Time of last modification change */
time_t St_ctime; /* Time of last status change inode changed */
};
6. Using the following macro (macros) to define the file type, the following St_mode fields include the following sections:
S_isreg (M) is it a regular file? Whether it is a regular file
S_isdir (m) directory? Whether it is a directory
S_ISCHR (m) character device? Whether it is a character device
S_isblk (m) block device? Whether it is a block device
S_isfifo (M) FIFO (named pipe)? Whether it is an input/output (pipe)
S_islnk (m) symbolic link? (not in posix.1-1996.) Whether it is a symbolic link
S_issock (m) socket? (not in posix.1-1996.) Whether it is a socket
7. The following flags are defined for this St_mode domain
S_IFMT 0170000 bit mask for the file type bit field defines a bitmask for a bit domain
S_ifsock 0140000 Socket Socket
S_iflnk 0120000 Symbolic Link symbolic connection
S_ifreg 0100000 Regular file regular files
S_IFBLK 0060000 block Device
S_ifdir 0040000 Directory Catalog
S_IFCHR 0020000 character Device character devices
S_ififo 0010000 FIFO Advanced first-out
s_isuid 0004000 Set-user-id bit File (set User-id on execution) bit
s_isgid 0002000 Set-group-id bit (see below) File (set Group-id on execution) bit
s_isvtx 0001000 sticky bit (see below) The sticky of the file is
s_irwxu 00700 Mask for file owner permissions
s_irusr 00400 owner has read permission owner has Read permissions
s_iwusr 00200 Owner has write permission to the owner of the permission
s_ixusr 00100 Owner has execute permission the owner has execute permissions
S_irwxg Mask of 00070 mask for group permissions group permissions
S_IRGRP 00040 Group has read access to permission groups
S_IWGRP 00020 Group has write permission groups some permissions
S_IXGRP 00010 Group has EXECUTE permission groups have Execute permissions
S_irwxo 00007 Mask for permissions to others (not in group) permission mask
S_iroth 00004 Others have Read permission other people have access
S_iwoth 00002 Others have write permission others have writing permissions
S_ixoth 00001 Others have execute permission others have execution permissions
8. About Sticky position
If a directory has a sticky bit (s_isvtx), then the files in this directory can only be deleted or modified by the owner of the file, the owner of the secondary directory, or root.
9. In addition
struct STATFS {
Long F_type; File system type
Long f_bsize; Block size
Long f_blocks; How many blocks?
Long F_bfree; Free Blocks
Long F_bavail; Available blocks
Long F_files; Total File node
Long F_ffree; Free File node
fsid_t F_fsid; File System ID
Long F_namelen; Maximum length of file name
Long f_spare[6]; Spare for later
};
10.stat () function invocation case (called stat () programmatically and renders the information in the stat struct)
Operation Result:
Linux Server development: Stat (), Fstat (), Lstat () detailed introduction + Case presentation