struct stat中的mode_t
mode_t是无符号整形。它由
S_IRUSR
S_IWUSR
S_IXUSR
S_IRGRP
S_IWGRP
S_IXGRP
S_IROTH
S_IWOTH
S_IXOTH几个按位或而的来;所得到的数为8进制
S_IFMT 文件类型的位遮罩
S_IFSOCK socket
S_IFLNK 符号链接(symbolic link)
S_IFREG 一般文件
S_IFBLK 区块装置(block device)
S_IFDIR 目录
S_IFCHR 字符装置(character device)
S_IFIFO 先进先出(fifo)
S_ISUID 文件的(set user-id on execution)位
S_ISGID 文件的(set group-id on execution)位
S_ISVTX 文件的sticky位
S_IRWXU 文件所有者的遮罩值(即所有权限值)
S_IRUSR 文件所有者具可读取权限
S_IWUSR 文件所有者具可写入权限
S_IXUSR 文件所有者具可执行权限
S_IRWXG 用户组的遮罩值(即所有权限值)
S_IRGRP 用户组具可读取权限
S_IWGRP 用户组具可写入权限
S_IXGRP 用户组具可执行权限
S_IRWXO 其他用户的遮罩值(即所有权限值)
S_IROTH 其他用户具可读取权限
S_IWOTH 其他用户具可写入权限
S_IXOTH 其他用户具可执行权限
摘自《Linux C 函数库参考手册》
图中为几个标志位在C中的取值,S_IRUSR为00400,S_IWUSR为00200,在此处,按位或后的值为00600;按位或时是右对齐
#include<stdio.h>
#include<unistd.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdlib.h>
int main()
{
struct stat bf;
int fd;
fd=open("/home",O_RDONLY);
fstat(fd,&bf);
printf("/home %o\n",bf.st_mode);
exit();
}
在本人电脑中,目录/home的权限为-rwxr-xr-x,即为八进制755,运行程序,以%o八进制输出st_mode,最终得到40755,对照上面标志位的值,结果是正确的,第一位的4是说明当前文件为目录,对应的标志位值为S_IFDIR 0040000 目录
struct stat中的mode_t的更多相关文章
- golang struct 定义中json``解析说明
在代码学习过程中,发现struct定义中可以包含`json:"name"`的声明,所以在网上找了一些资料研究了一下 package main import ( "enco ...
- 【转】在Python的struct模块中进行数据格式转换的方法
这篇文章主要介绍了在Python的struct模块中进行数据格式转换的方法,文中还给出了C语言和Python语言的数据类型比较,需要的朋友可以参考下 Python是一门非常简洁的语言,对于数据类型的表 ...
- struct iphdr中的__LITTLE_ENDIAN_BITFIELD和__BIG_ENDIAN_BITFIELD
__LITTLE_ENDIAN_BITFIELD表示小端序,__BIG_ENDIAN_BITFIELD表示大端序. /usr/include/linux/ip.h中有一段代码定义了ip首部的结构体,例 ...
- python struct.pack中的对齐字节问题
最近测试涉及到了序列字节化相关问题,碰到一个头疼的问题 buff = struct.pack("3s","B00") print repr(buff) 输 ...
- struct streaming中的监听器StreamingQueryListener
在struct streaming提供了一个类,用来监听流的启动.停止.状态更新 StreamingQueryListener 实例化:StreamingQueryListener 后需要实现3个函数 ...
- struct platform_device中的id成员
include/linux/platform_device.h #define PLATFORM_DEVID_NONE (-1) #define PLATFORM_DEVID_AUTO (-2) dr ...
- Python中对字节流/二进制流的操作:struct
前言 前段时间使用Python解析IDX文件格式的MNIST数据集,需要对二进制文件进行读取操作,其中我使用的是struct模块.查了网上挺多教程都写的挺好的,不过对新手不是很友好,所以我重新整理了一 ...
- 关于C中struct和union长度的详解
这几天看<代码大全>中的第十三章---不常见的数据类型,里面讲解到了C语言中的struct以及对指针的解释,联想到以前看过相关的关于C语言中stuct长度的文章,只是现在有些淡忘了,因此今 ...
- 内核中用于数据接收的结构体struct msghdr(转)
内核中用于数据接收的结构体struct msghdr(转) 我们从一个实际的数据包发送的例子入手,来看看其发送的具体流程,以及过程中涉及到的相关数据结构.在我们的虚拟机上发送icmp回显请求包,pin ...
随机推荐
- rbenv配置
git clone https://github.com/rbenv/rbenv.git ~/.rbenv # 用来编译安装 ruby git clone git://github.com/sstep ...
- DHCP(四)
确认阶段:即DHCP服务器确认分配级DHCP客户端IP地址的阶段.某个DHCP服务器在收到DHCP客户端发来的DHCP Request报文后,只有DHCP客户端选择的服务器会进行如下操作:如果确认将地 ...
- Java并发--CountDownLatch CyclicBarrier ReentrantLock
CountDownLatch CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行.CountDownLatch使用一个数字count初始化,使 ...
- 杂项-Java:JCP
ylbtech-杂项-Java:JCP JCP(Java Community Process) 是一个开放的国际组织,主要由Java开发者以及被授权者组成,职能是发展和更新. 1. 中文名:jcp 外 ...
- VC++使用TCHAR
#ifdef _UNICODE #define tcout wcout #define tcin wcin #else #define tcout cout #define tcin cin #end ...
- vs2017 android demo
vs2017自安装以后就没怎么打开过,虽然12出的时候用10,15出的时候用13,17出的时候用15,但我依然坚持不用也装上再说的理念. 1.vs2017开发IOS和Android安装所必不可少的,u ...
- oracle 11g R2 标准版 64位linux安装
安装环境:Redhat es 5.5 64位 ,系统内存8G,swap 10G ,oracle 11G R2 标准版 一,Oracle 安装前的准备检查一下包,必须全部安装:binutils-2.17 ...
- Linux 学习笔记之 --- epoll 事件模型详解
epoll 主要采用对已就绪的 fd 进行轮询操作 一.epoll 触发方式 epoll支持 ET 和 LT 两种触发方式 ET(边缘触发):Nginx 就是采用 ET 触发方式,只支持 no-b ...
- Tornado 高并发源码分析之四--- HTTPServer 与 TCPServer 对象
主要工作: 服务器启动的时候做的事: 1.把包含了各种配置信息的 application 对象封装到了 HttpServer 对象的 request_callback 字段中,等待被调用 2.TCPS ...
- Oracle行转列LISTAGG函数
工作过程中需要将查询的数据分组并显示在一行.以往的工作经验,在sql server中可以用for xml path来实现. 现提供Oracle数据库的行转列方式 oracle11g官方文档简介如下: ...