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的更多相关文章

  1. golang struct 定义中json``解析说明

    在代码学习过程中,发现struct定义中可以包含`json:"name"`的声明,所以在网上找了一些资料研究了一下 package main import ( "enco ...

  2. 【转】在Python的struct模块中进行数据格式转换的方法

    这篇文章主要介绍了在Python的struct模块中进行数据格式转换的方法,文中还给出了C语言和Python语言的数据类型比较,需要的朋友可以参考下 Python是一门非常简洁的语言,对于数据类型的表 ...

  3. struct iphdr中的__LITTLE_ENDIAN_BITFIELD和__BIG_ENDIAN_BITFIELD

    __LITTLE_ENDIAN_BITFIELD表示小端序,__BIG_ENDIAN_BITFIELD表示大端序. /usr/include/linux/ip.h中有一段代码定义了ip首部的结构体,例 ...

  4. python struct.pack中的对齐字节问题

    最近测试涉及到了序列字节化相关问题,碰到一个头疼的问题 buff = struct.pack("3s","B00")    print repr(buff) 输 ...

  5. struct streaming中的监听器StreamingQueryListener

    在struct streaming提供了一个类,用来监听流的启动.停止.状态更新 StreamingQueryListener 实例化:StreamingQueryListener 后需要实现3个函数 ...

  6. struct platform_device中的id成员

    include/linux/platform_device.h #define PLATFORM_DEVID_NONE (-1) #define PLATFORM_DEVID_AUTO (-2) dr ...

  7. Python中对字节流/二进制流的操作:struct

    前言 前段时间使用Python解析IDX文件格式的MNIST数据集,需要对二进制文件进行读取操作,其中我使用的是struct模块.查了网上挺多教程都写的挺好的,不过对新手不是很友好,所以我重新整理了一 ...

  8. 关于C中struct和union长度的详解

    这几天看<代码大全>中的第十三章---不常见的数据类型,里面讲解到了C语言中的struct以及对指针的解释,联想到以前看过相关的关于C语言中stuct长度的文章,只是现在有些淡忘了,因此今 ...

  9. 内核中用于数据接收的结构体struct msghdr(转)

    内核中用于数据接收的结构体struct msghdr(转) 我们从一个实际的数据包发送的例子入手,来看看其发送的具体流程,以及过程中涉及到的相关数据结构.在我们的虚拟机上发送icmp回显请求包,pin ...

随机推荐

  1. Indy10收发Hotmail邮件

    hotmail开放了pop3,可以使用客户端工具收取邮件了. POP 服务器: pop3.live.com (端口 995)需要 POP SSL?: 是的用户名: Windows Live ID, 比 ...

  2. 使用XV-11激光雷达做hector_slam

    大家在学习ROS中不可避免需要使用激光雷达,高精地图.实时定位以及障碍物检测等多项技术,而这些技术都离不开光学雷达的支持,但是呢雷达这真是太贵了,大部分人是负担不起(实验室.研究所土豪可以略过),但是 ...

  3. An invalid form control with name='timeone[]' is not focusable.

    在项目开发的时候 遇到了这样的报错 An invalid form control with name='timeone[]' is not focusable. 学习源头:https://segme ...

  4. android签名生成和发布

    首先,我们需要一个keystore,当然已经有了的话就不用这一步了:cmd下:进入到jdk的bin目录,这样的话,android.keystore文件就会生成在这个目录下,签名的时候我们需要这个文件C ...

  5. 【转】Jmeter和LR上传文件和下载

    背景: 在某个申请业务中,需要上传附件文件,然后才能提交该申请 遇到的问题: 1,  在使用Jmeter或者LR进行录制时,无法录制到上传文件的请求,只能通过Fiddler能查看到该请求 2,  因为 ...

  6. linux 根据进程名查看其占用的端口

    linux 根据进程名查看其占用的端口 pasting $ netstat -nap | grep pid    //查看进程ID 所占的端口 netstat -lnp 查看端口所在的进程 will ...

  7. AJAX中的跨域问题:什么是跨域?如何解决跨域问题?

    域不一样的,即为跨域,包括(协议,域名,端口号) 1. 指定允许其他域名访问 header('Access-Control-Allow-Origin:*'); 2.使用jsonp

  8. netty实现远程调用RPC功能

    netty实现远程调用RPC功能 依赖 服务端功能模块编写 客户端功能模块编写 netty实现远程调用RPC功能 PRC的功能一句话说白了,就是远程调用其他电脑的api 依赖 <dependen ...

  9. Pandas统计计算和描述

    Pandas统计计算和描述 示例代码: import numpy as np import pandas as pd df_obj = pd.DataFrame(np.random.randn(5,4 ...

  10. STM32与PC机串口通讯

    有时要将板子的信息输出到电脑上来调试之类的,或者把传感器收集到的数据显示到电脑. 当然了,这只是最基本的串口通信,简单的说,是有一根USB线连着的. mbed上并没有能显示printf的功能.需要自己 ...