stat函数

  1. #include <sys/types.h>
  2. #include <sys/stat.h>
  3. #include <unistd.h>
  4. int stat(const char *path, struct stat *buf);
  5. int lstat(const char *pathname, struct stat *buf);
  6. 功能:
  7. 获取文件状态信息
  8. statlstat的区别:
  9. 当文件是一个符号链接时,lstat返回的是该符号链接本身的信息;
  10. stat返回的是该链接指向的文件的信息。
  11. 参数:
  12. path:文件名
  13. buf:保存文件信息的结构体
  14. 返回值:
  15. 成功: 0
  16. 失败: -1

struct stat结构体说明:

struct stat {
    dev_t           st_dev;     //文件的设备编号
    ino_t           st_ino;     //节点
    mode_t          st_mode;            //文件的类型和存取的权限
    nlink_t         st_nlink;       //连到该文件的硬连接数目,刚建立的文件值为1
    uid_t           st_uid;     //用户ID
    gid_t           st_gid;     //组ID
    dev_t           st_rdev;        //(设备类型)若此文件为设备文件,则为其设备编号
    off_t           st_size;        //文件字节数(文件大小)
    blksize_t       st_blksize;     //块大小(文件系统的I/O 缓冲区大小)
    blkcnt_t        st_blocks;      //块数
    time_t          st_atime;       //最后一次访问时间
    time_t          st_mtime;       //最后一次修改时间
    time_t          st_ctime;       //最后一次改变时间(指属性)
};

st_mode(16位整数)参数说明
image.png
文件类型判断应使用宏函数
image.png

int main()
{
    struct stat buf;
    stat("a.txt", &buf);

    if (S_ISREG(buf.st_mode))
    {
        printf("%s\n", "这是普通文件");
    }

    return 0;
}