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. 从JVM的角度解析String

    1. 字符串生成过程 我们都知道String s = "hello java";会将“hello java”放入字符串常量池,但是从jvm的角度来看字符串和三个常量池有关,clas ...

  2. SpringMvc入门一----介绍

    Spring Mvc简介: Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求 ...

  3. ActiviMQ(1)

    1. ActiviMQ是实现JMS接口和规范的消息中间件(Provider), 2. JMS,Java Message Service, java消息服务,是JavaEE中的一个技术 3. JMS规范 ...

  4. maven环境配置详解,及maven项目的搭建及maven项目聚合

    首先:Maven 3.2.1:不同版本中仓库中文件是不一样的,Maven运行,先找用户配置,再找全局配置 1. Maven全局配置:全局统一的配置文件,在maven的安装目录中 2. Maven用户配 ...

  5. innodb事务日志详解

    首先看InnoDB的缓存和文件的关系图如下: InnoDB事务日志功能介绍 InnoDB使用日志来减少提交事务时的开销.因为日志中已经记录了事务,就无须在每个事务提交时把缓冲池的脏块刷新(flush) ...

  6. 微信小程序之页面跳转

    方式一: <navigator class="menu_block" url="/pages/address/address"> <text ...

  7. 第2章 深入分析java I/O的工作机制(上)

    java的I/O操作类在包java.io下,大致分成4组: 所有文件的存储都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再存储这些字节到磁盘.在读取文件时,也是一个 ...

  8. mongoDB的了解

    一.什么是mongoDB? 1.MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能. 2.MongoDB 旨在为WEB ...

  9. Java面向对象-Java类的继承及super关键字

    Java面向对象-Java类的继承 1,继承定义以及基本使用 定义:子类能够继承父类的属性和方法: 注意点:Java中只支持单继承: 私有方法不能继承: 上代码: package com.java12 ...

  10. Java字节码

    Java字节码 javap -c 反编译.class文件可得字节码 知乎讨论https://www.zhihu.com/question/27831730 栈和局部变量操作 将常量压入栈的指令 aco ...