博客
关于我
stat函数详解
阅读量:231 次
发布时间:2019-02-28

本文共 1486 字,大约阅读时间需要 4 分钟。

stat函数详解

操作步骤

1.1.1 获取文件信息

stat函数用于获取文件或目录的详细信息,主要用于文件系统的操作和管理。

1.1.2 函数依赖

使用stat函数前需包含以下头文件:

#include 
#include
#include

1.1.3 函数定义

函数原型定义如下:

int stat(const char *path, struct stat *buf);

1.1.4 调用结果

  • 成功调用返回0
  • 失败返回-1

1.1.5 函数参数

  • path:文件路径或文件名
  • buf:用于存储文件信息的struct stat结构体

struct stat结构体

1.2.1 struc stat成员说明

struct stat结构体包含以下成员:

  • st_dev:设备ID
  • st_ino:inode节点ID
  • st_mode:文件模式和权限位
  • st_nlink:硬链接数量
  • st_uid:文件所有者ID
  • st_gid:文件组ID
  • st_rdev:设备文件的设备ID
  • st_size:文件大小(字节)
  • st_blksize:文件系统I/O块大小
  • st_blocks:文件占用的块数量
  • st_atime:最后一次访问时间
  • st_mtime:最后一次修改时间
  • st_ctime:最后一次状态改变时间

1.2.2 st_mode权限位

st_mode的低5位(即0b00000至0b11111)表示文件类型及其权限:

  • 0b11111: 设备文件类型掩码(S_IFMT)
  • 0b01100: 套接字(S_IFSOCK)
  • 0b01000: 符号连接(S_IFLNK)
  • 0b00100: 一般文件(S_IFREG)
  • 0b00000: 区块设备文件(S_IFBLK)
  • 0b00000: 目录(S_IFDIR)
  • 0b00000: 字符设备文件(S_IFCHR)
  • 0b00000: 先进先出文件(S_IFIFO)
  • 0b00000: 套接字(S_ISSOCK)

1.2.3 权限位解释

st_mode的高10位(0b00000000000至0b11111111111)表示文件权限:

  • 0b00000000000: 设备文件类型掩码(S_IFMT)
  • 0b00000000000: sticky位(S_ISVTX):防止文件被删除或重命名
  • 0b00000000000: 执行权限(S_IEXEC):文件所有者可执行
  • 0b00000000000: 写权限(S_IWRITE):文件所有者可写
  • 0b00000000000: 读权限(S_IREAD):文件所有者可读
  • 0b00000000000: 用户组权限(S_IRGRP):用户组成员可读
  • 0b00000000000: 用户组写权限(S_IWGRP)
  • 0b00000000000: 用户组执行权限(S_IXGRP)
  • 0b00000000000: 其他用户可读(S_IROTH)
  • 0b00000000000: 其他用户可写(S_IWOTH)
  • 0b00000000000: 其他用户可执行(S_IXOTH)

1.2.4 st_mode的结构

st_mode的结构可以分为三部分:

  • 文件类型与设备类型(15-12位):用于判断文件类型,例如目录或设备文件
  • 执行权限(11-9位):用于判断文件是否可执行
  • 读/写权限(8-0位):用于判断文件的读写权限
  • 此外,st_mode中还包含sticky位(S_ISVTX),用于表示文件是否具有“粘性”属性(即只能被文件所有者、目录所有者或root删除或重命名)。

    转载地址:http://fbzi.baihongyu.com/

    你可能感兴趣的文章
    QT界面操作1:如何跟踪鼠标位置?
    查看>>
    QT点击"X"按钮,调用closeEvent()函数来实现调用特定事件(附:粗略介绍QT的信号与槽的使用方法)...
    查看>>
    Pomelo开发中Web客户端开发API简介
    查看>>
    PON架构(全光网络)
    查看>>
    PoolingHttpClientConnectionManager原理剖析
    查看>>
    POP-一个点击带有放大还原的动画效果
    查看>>
    POP3 协议在计算机网络中的优缺点
    查看>>
    Portaudio笔记-WASAPI
    查看>>
    position:fixed失效情况
    查看>>
    Position属性四个值:static、fixed、absolute和relative的区别和用法
    查看>>
    POSIX thread编程中关于临界区内条件变量的分析
    查看>>
    POSIX与程序可移植性
    查看>>
    posix多线程有感--自旋锁
    查看>>
    SpringBoot中集成海康威视SDK实现布防报警数据上传/交通违章图片上传并在linux上部署(附示例代码资源)
    查看>>
    POSIX标准和XSI扩展
    查看>>
    post install error,please remove node_moules before retry
    查看>>
    PostGIS中获取所有EPSG的编码以及对应Proj4字符串
    查看>>
    PostGIS在Windows上的下载与安装
    查看>>
    postgis数据库优化_postgresql 性能优化
    查看>>
    Postgres Docker版本安装mysql_fdw 插件
    查看>>