stat函数详解

Linux系统函数之文件系统管理(二)stat函数​作用:获取文件信息​头文件:include<sys/types.h>#include<sys/stat.h>#include<unistd.h>​函数原型:intstat(constchar*path,structstat*buf)​返回值:成功返…

大家好,又见面了,我是你们的朋友全栈君。

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 位保存文件访问权限

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/125171.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 图解排序算法(三)之堆排序

    图解排序算法(三)之堆排序预备知识堆排序堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆堆是具有以下性

  • 无法解析的外部符号的几种可能

    无法解析的外部符号的几种可能参考:https://blog.csdn.net/educast/article/details/12491473,补充了一项1. lib文件未引入。可使用“#pragmacomment(lib,“winsock.lib”)”语句添加lib引用,也可在项目依赖里添加。2. 类方法的实现未加类标识。如,“CTest::Connect(void){…}”写成了“Conn…

  • 新概念51单片机C语言教程纠错(3)「建议收藏」

    新概念51单片机C语言教程纠错(3)「建议收藏」这一次错误在课本P140页例6.6.1中,这个例子在proteus仿真中再一次刷新了我的认知主要的bug在两个地方,第一仍是单片机上电后数码管的点亮问题,由于这个例题需要数码管不断刷新,所以bug的影响比前一篇纠错文章中更加明显;第二是由于没加延迟函数导致的无脑刷新问题。具体效果视频中有表现,其中的操作为,上位机输入1,单片机的ad打开,并返回voltage到调试助手,同时数码管显示数字。输入…

  • pycharm 修改镜像源_linux镜像源哪个好

    pycharm 修改镜像源_linux镜像源哪个好镜像网站是将一个完全相同的站点放到几个服务器,分别有自己的URL,在这些服务器上互为镜像网站。它和主站并没有太大差别,或者可算是为主站作的后备措施。有了镜像网站的好处是:如果不能对主站作正常访问(如某个服务器死掉或出了意外),但仍能通过其它服务器正常浏览。相对来说主站在速度等各方面比镜像站点略胜一筹。

  • linux系统网桥管理工具brctl 安装及使用

    linux系统网桥管理工具brctl 安装及使用

  • python在线音乐播放器_python实现音乐播放器「建议收藏」

    python在线音乐播放器_python实现音乐播放器「建议收藏」python是一个比较活泼的语言,它可以很快速、很方便地实现很多有意思的东西。最近,学习了一下如何使用python制作一个简单的音乐播放器,整体的效果如下图所示。所需要的导入的库tkinterostimethreadingpygame如果没有安装这个库,简单粗暴的pipinstall+库例如,我没有安装过pygame这个库,准备工作下载音乐,喜欢的歌曲,选择mp3格式这里,给大家提供一个…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号