Linux系统编程21 文件系统 - 文件属性 st_mode

分析 mode_t st_mode

st_mode 是一个16位的位图,用于表示文件类型,文件访问权限,及特殊权限位。

mhr@ubuntu:~/work/linux/wenjianxitong/20$ ls -l
total 24
-rwxrwxr-x 1 mhr mhr       8936 May  4 09:04 a.out
-rw-rw-r--  1 mhr mhr        436 May  4 09:04 big.c
-rw-------   1 mhr mhr 5368709120 May  4 09:04 bigfile
-rw-------   1 mhr mhr 5368709120 May  4 09:07 bigfile.bak
mhr@ubuntu:~/work/linux/wenjianxitong/20$ 

即最前面一串 -rwxrwxr-x 等等,这些信息全部存放在 st_mode 中,以位图的形式存放。mode_t 是一个16位的整型数。mode_t 由2部分组成: 文件类型 + 文件权限

文件类型  user权限    group 同组用户的权限     other 用户的权限
 -        rwx             rwx                  r-x 

文件类型分为如下几类:
dcb-lsp 7种类型

1 普通文件          -
2 目录文件          d
3 块特殊文件        b
4 字符特殊文件      c
5 FIFO            p
6 套接字(socket)   s
7 符号链接(symbolic link) l

用如下宏测试文件类型,成立返回真,不成立返回假
在这里插入图片描述

在这里插入图片描述

位图

在这里插入图片描述

.

 struct stat {
           dev_t     st_dev;         /* ID of device containing file */文件所在设备的ID
           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) */设备ID号,针对设备文件
           off_t     st_size;        /* total size, in bytes */文件大小,字节为单位
           blksize_t st_blksize;     /* blocksize 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
       };
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux老A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值