stat函数
int lstat(const char *path,struct stat*buf)
当文件是一个符号链接时,lstat返回的是该符号链接本身的信息,而stat返回的是该链接指向的文件的信息。
struct stat
{
dev_t st_dev; //设备号码
ino_t st_ino; //inode节点号
mode_t st_mode; //文件对应的模式,文件,目录,sock,管道等等
nlink_t st_nlink; //文件的连接数 软连接或硬链接
uid_t st_uid; //文件所有者
gid_t st_gid; //文件所有者对应的组
dev_t st_rdev; //特殊设备号码
off_t st_size; //普通文件,对应的文件字节数
timestruc_t st_atim; //文件最后被访问的时间
timestruc_t st_mtim; //文件内容最后被修改的时间
timestruc_t st_ctim; //文件状态改变时间
blksize_t st_blksize; //文件内容对应的块
blkcnt_t st_blocks; //文件内容对应的块数量
char st_fstype[_ST_FSTYPSZ];
};
stat结构体中的st_mode则定义了下列数种情况
|
S_IFMT |
0170000 |
文件类型的位遮罩 |
|
S_IFSOCK |
0140000 |
socket |
|
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_WGRP |
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(st_mode) |
是否为先进先出 |
|
S_ISSOCK(st_mode) |
是否为socker |
若一般目录具有sticky位(S_ISVTX),则表示在此目录下的文件只能被该文件所有者、此目录所有者或root来输出或改名,在linux中,最典型的就是/tmp目录了。
stat函数的更多相关文章
- Python 小而美的函数
python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况 any any(iterable) ...
- 探究javascript对象和数组的异同,及函数变量缓存技巧
javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...
- JavaScript权威指南 - 函数
函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...
- C++对C的函数拓展
一,内联函数 1.内联函数的概念 C++中的const常量可以用来代替宏常数的定义,例如:用const int a = 10来替换# define a 10.那么C++中是否有什么解决方案来替代宏代码 ...
- 菜鸟Python学习笔记第一天:关于一些函数库的使用
2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...
- javascript中的this与函数讲解
前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域.并且,大家可以认为全局作用域其实就是Window函数的函数作用域,我们编写的js代码, ...
- 复杂的 Hash 函数组合有意义吗?
很久以前看到一篇文章,讲某个大网站储存用户口令时,会经过十分复杂的处理.怎么个复杂记不得了,大概就是先 Hash,结果加上一些特殊字符再 Hash,结果再加上些字符.再倒序.再怎么怎么的.再 Hash ...
- JS核心系列:浅谈函数的作用域
一.作用域(scope) 所谓作用域就是:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的. function scope(){ var foo = "global&quo ...
- C++中的时间函数
C++获取时间函数众多,何时该用什么函数,拿到的是什么时间?该怎么用?很多人都会混淆. 本文是本人经历了几款游戏客户端和服务器开发后,对游戏中时间获取的一点总结. 最早学习游戏客户端时,为了获取最精确 ...
- Python高手之路【四】python函数装饰器
def outer(func): def inner(): print('hello') print('hello') print('hello') r = func() print('end') p ...
随机推荐
- 全栈项目|小书架|服务器开发-NodeJS 中使用 Sequelize 操作 MySQL数据库
安装 官网:https://sequelize.org/v5/manual/getting-started.html 安装sequelize及数据库连接驱动 npm install --save se ...
- .NET Window服务启动又马上停止,报错IO.FileNotFoundException
最近公司需要开发一个Window服务推送系统,读取MongoDB写入消息队列,推送到各终端平台 但是在开发完成,最后的部署阶段,选中服务右击启动 看似正常,服务显示已启动(但实质已经被终止,因为Win ...
- head引入样式
引入CSS(base基础样式,index页面样式): <link rel="stylesheet" type="text/css" href=" ...
- webpack---eslint-loader学习随笔
第一步.在项目内安装: npm i -D eslint eslint-loader . 第二步.webpack的配置loader 注意loader的顺序,需先执行eslint-loader. 第三步. ...
- C++线程同步与互斥总结
互斥:当多个线程访问同一个全局变量,或者同一个资源(比如打印机)的时候,需要进行线程间的互斥操作来保证访问的安全性. 临界区.互斥体.事件和信号量都可以实现线程互斥.但如果仅仅需要实现互斥功能,推荐前 ...
- iOS数组遍历
对于一个数组 NSArray *array = @[@"111",@"222",@"333",@"444",@" ...
- Redis除了做缓存--Redis做消息队列/Redis做分布式锁/Redis做接口限流
1.用Redis实现消息队列 用命令lpush入队,rpop出队 Long size = jedis.lpush("QueueName", message);//返回存放的数据条数 ...
- hybris backoffice创建product遇到的synchronization问题和解答
我从product DSC-H20_MD clone了一个新的product,code为DSC-H20_MD1 因为它的状态有个红灯: 所以我点了这个sync按钮: 结果报这个错: 之后这个clone ...
- spring 自定义schema 加载异常 White spaces are required between publicId and systemId.
spring 项目启动报错 报错日志如下: Caused by: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreExcepti ...
- 用c#监控网络流量
using System; using System.Text; using System.Net; using System.Net.Sockets; using System.Runtime.In ...