首页 > 其他分享 >stat函数详解

stat函数详解

时间:2023-09-23 22:24:38浏览次数:32  
标签:文件 stat 函数 具可 st 详解 mode 权限

Linux系统函数之文件系统管理

stat函数

作用:获取文件信息

include <sys/types.h> #include <sys/stat.h> #include <unistd.h>

函数原型

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

返回值:成功返回0,失败返回-1;

参数:文件路径(名),struct stat 类型的结构体

struct stat 结构体详解

struct stat
{
    dev_t     st_dev;     /* ID of device containing file */文件使用的设备号
    ino_t     st_ino;     /* inode number */    索引节点号 
    mode_t    st_mode;    /* protection */  文件对应的模式,文件,目录等
    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; /* blocksize for file system I/O */ 包含该文件的磁盘块的大小   
    blkcnt_t  st_blocks;  /* number of 512B blocks allocated */ 该文件所占的磁盘块  
    time_t    st_atime;   /* time of last access */ 最后一次访问该文件的时间   
    time_t    st_mtime;   /* time of last modification */ /最后一次修改该文件的时间   
    time_t    st_ctime;   /* time of last status change */ 最后一次改变该文件状态的时间   
};

stat结构体中的st_mode 则定义了下列数种情况:

    S_IFMT   0170000    文件类型的位遮罩
    S_IFSOCK 0140000    套接字
    S_IFLNK 0120000     符号连接
    S_IFREG 0100000     一般文件
    S_IFBLK 0060000     区块装置
    S_IFDIR 0040000     目录
    S_IFCHR 0020000     字符装置
    S_IFIFO 0010000     先进先出
​
    S_ISUID 04000     文件的(set user-id on execution)位
    S_ISGID 02000     文件的(set group-id on execution)位
    S_ISVTX 01000     文件的sticky位
​
    S_IRUSR(S_IREAD) 00400     文件所有者具可读取权限
    S_IWUSR(S_IWRITE)00200     文件所有者具可写入权限
    S_IXUSR(S_IEXEC) 00100     文件所有者具可执行权限
​
    S_IRGRP 00040             用户组具可读取权限
    S_IWGRP 00020             用户组具可写入权限
    S_IXGRP 00010             用户组具可执行权限
​
    S_IROTH 00004             其他用户具可读取权限
    S_IWOTH 00002             其他用户具可写入权限
    S_IXOTH 00001             其他用户具可执行权限
​
    上述的文件类型在POSIX中定义了检查这些类型的宏定义:
    S_ISLNK (st_mode)    判断是否为符号连接
    S_ISREG (st_mode)    是否为一般文件
    S_ISDIR (st_mode)    是否为目录
    S_ISCHR (st_mode)    是否为字符装置文件
    S_ISBLK (s3e)        是否为先进先出
    S_ISSOCK (st_mode)   是否为socket
    若一目录具有sticky位(S_ISVTX),则表示在此目录下的文件只能被该文件所有者、此目录所有者或root来删除或改名,在linux中,最典型的就是这个/tmp目录啦。
​

st_mode 的结构

st_mode 主要包含了 3 部分信息:

  • 15-12 位保存文件类型
  • 11-9 位保存执行文件时设置的信息
  • 8-0 位保存文件访问权限

标签:文件,stat,函数,具可,st,详解,mode,权限
From: https://www.cnblogs.com/keep--fighting/p/17725181.html

相关文章

  • async函数-await
    await必须用在被async修饰的函数内(因为await会阻塞代码,但是阻塞的范围要限制在async函数执行的范围内)箭头函数中,添加async函数要写在参数的前面await是在异步函数内部使用的关键字,用于等待一个Promise对象的解决(成功)或拒绝(失败)。当使用await关键字时,它会暂停函数......
  • 偏函数
    Python中的偏函数是函数式编程强大工具,主要是减少函数调用的复杂性。可以理解为,将现有函数在某些参数固定下来,构造成一个新的函数。新函数就不用写那么多参数了。'''偏函数'''fromfunctoolsimportpartialdefadd(a,b):sum=a+breturnsumif__name__=='......
  • 几个函数的平均阶
    几个函数的平均阶目录Chapter1\(d(n)\)的平均阶Chapter2除数函数\(\sigma_\alpha(n)\)的平均阶Chapter3\(\mu(n)\)和\(\Lambda(n)\)的平均阶Chapter1\(d(n)\)的平均阶Theorem:Th1:对所有\(x\ge1\),我们有\[\sum_{n\lex}d(n)=x\logx+(2C-1)x+\Omicron(\sqrtx)......
  • Hive学习3(数据库操作DML、join、hive函数)
    1.对数据库操作数据定义语言(DataDefinitionLanguage,DDL),是SQL语言集中对数据库内部的对象结构进行创建,删除,修改等的操作语言,这些数据库对象包括database、table等。DDL核心语法由CREATE、ALTER与DROP三个所组成。DDL并不涉及表内部数据的操作。1.1创建数据库created......
  • 无涯教程-JavaScript - PEARSON函数
    描述PEARSON函数返回Pearson乘积矩相关系数r,它是一个无因次索引,范围为-1.0到1.0(含),反映了两个数据集之间线性关系的程度。语法PEARSON(array1,array2)争论Argument描述Required/OptionalArray1Asetofindependentvalues.RequiredArray2Asetofdependent......
  • linux 的history命令详解
    简介在Linux操作系统中,history命令是一个非常常用的命令。它可以让用户查看他们在终端中运行过的所有命令,这些命令会按照时间顺序排列.history命令的基本用法history命令的基本用法非常简单。只需要在终端中输入history命令,就可以查看之前所有执行过的命令。这些命令会按......
  • 无涯教程-JavaScript - NORM.S.DIST函数
    描述NORM.S.DIST函数返回标准正态分布(平均值为零,标准偏差为1)。使用此功能代替标准法线区域的表格。语法NORM.S.DIST(z,cumulative)争论Argument描述Required/OptionalZThevalueforwhichyouwantthedistribution.RequiredCumulative累积值是确定函数形式......
  • Flutter路由插件fluro详解
    fluro的使用fluro的介绍fluro是一个流行的Flutter插件,用于实现高级路由管理。它提供了灵活的路由配置和导航功能,支持命名路由、参数传递、路由拦截、动画效果等,使得在Flutter应用程序中管理页面导航变得更加简单和可扩展。下面是对fluro插件的详细介绍:安装和导入:您可以通过在pu......
  • 无涯教程-JavaScript - NORM.S.INV函数
    描述NORMS.S.INV函数返回标准正态累积分布的反函数。该分布的平均值为零,标准偏差为1。语法NORM.S.INV(probability)争论Argument描述Required/OptionalProbabilityAprobabilitycorrespondingtothenormaldistribution.RequiredNotes如果概率为非数值,则NOR......
  • C语言-字符串相关库函数用法+模拟实现
    常见的与字符串有关的库函数strstr()寻找子字符串strcat()字符串追加函数strcmp()字符串比较函数strcpy()字符串拷贝函数strlen()求解字符串长度...1.strstr()寻找子字符串我们先来看MSDN中对该函数的功能描述:Findasubstring.(寻找子......