Linux之系统文件

stat 主要函数

stat, fstat, lstat, fstatat —— get file status 获取文件属性。

#include 
#include 
#include 

int stat(const char *pathname, struct stat *statbuf);
int fstat(int fd, struct stat *statbuf);
int lstat(const char *pathname, struct stat *statbuf);

#include            /* Definition of AT_* constants */
#include 

int fstatat(int dirfd, const char *pathname, struct stat *statbuf, int flags);

stat 描述

  • 这些函数在 statbuf 指向的缓冲区中返回有关文件的信息。文件本身不需要任何权限,但是ーー在 stat ()、 fstatat ()和 lstat ()的情况下ーー需要对导向文件的路径名中的所有目录执行(search)权限。
  • Stat ()和 fstatat ()检索由路径名指向的文件的信息; fstatat ()的区别如下所述。
  • Lstat ()与 stat ()完全相同,除了如果路径名是一个符号链接,那么它返回关于链接本身的信息,而不是它引用的文件。
  • Fstat ()与 stat ()完全相同,只是要检索的信息的文件由文件描述符 fd 指定。

stat 结构体

All of these system calls return a stat structure, which contains the following fields:

struct stat {
    dev_t     st_dev;         /* ID of device containing file */
    ino_t     st_ino;         /* Inode number */
    mode_t    st_mode;        /* File type and mode */
    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 ID (if special file) */
    off_t     st_size;        /* Total size, in bytes */
    blksize_t st_blksize;     /* Block size for filesystem I/O */
    blkcnt_t  st_blocks;      /* Number of 512B blocks allocated */

    /* Since Linux 2.6, the kernel supports nanosecond
       precision for the following timestamp fields.
       For the details before Linux 2.6, see NOTES. */

    struct timespec st_atim;  /* Time of last access */
    struct timespec st_mtim;  /* Time of last modification */
    struct timespec st_ctim;  /* Time of last status change */

#define st_atime st_atim.tv_sec      /* Backward compatibility */
#define st_mtime st_mtim.tv_sec
#define st_ctime st_ctim.tv_sec
};

判断文件各类操作

st_mode是用特征位来表示文件类型的,特征位的定义如下:

你可能感兴趣的:(linux,运维)