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 ...
随机推荐
- [转]mongodb authentication 设置权限之后,新建个管理账户和一般数据库用户,在win 7 64bit 环境下测试使用实例
如果之前安装mongodb时没有使用 --auth,那么必须要卸载MongoDB服务,进行重新安装,设置账号权限才生效! 主要是解决在测试使用mongo db 时候,总是出现的MongoAuthent ...
- Oracle.EntityFrameworkCore使用时报错:ORA-00933:SQL命令未正确结束
如果你在使用 Oracle.EntityFrameworkCore 在执行一些分页查询或者其他数据操作时,遇到“ORA-00933:SQL命令未正确结束”, 请先检查你的DbContext中UseOr ...
- C盘清理、C盘瘦身、省出30G
三招C盘瘦身30G,清理win10系统中虚占C盘空间的三大祸害 1.对C盘进行“磁盘清理” C盘右键->属性->磁盘清理->清理系统文件->勾选“windows更新清理”-&g ...
- VBA 打印及破密
Sub 打印()ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=TrueCall dyEnd SubSub dy()Dim a%, b ...
- Java中BIO和NIO
同步/异步.阻塞/非阻塞概念 同步异步 同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication) 同步:在发出一个 ...
- 【阿里云开发】- 安装JDK
1.阿里云轻量服务器入口 https://swas.console.aliyun.com/?spm=5176.2020520001.1011.2.29ff4bd3P4AEDc#/servers 2.使 ...
- Django form表单 组件
目录 Django form表单 组件 Form 组件介绍 普通方式手写注册功能 使用form组件实现注册功能 Form 常用字段与插件 常用字段(必备) 字段参数(必备) 内置验证(必备) 自定义效 ...
- [AIR] NativeExtension在IOS下的开发实例 --- Flex库项目的创建(二)
来源:http://bbs.9ria.com/thread-102038-1-1.html 上一章,我已经介绍了如果创建IOS库文件,并定义了两个方法ShowIconBadageNumber和Init ...
- 版本管理工具Git三种工作流
Git是分布式版本管理控制的工具.学习Git一般都是先去学习Git的命令. 但是学习完Git的基本命令之后还是不知道怎样使用Git.首先,我们要清楚的 一点是Git的使用方法其实有很多种,也就是说Gi ...
- SAP 2019 TechEd Key Note解读:云时代下SAP从业人员如何做二次开发?
刚刚过去的在巴塞罗那举行的2019 SAP TechEd,SAP照例向全球广大的SAP生态圈从业者们传达了一些重要的信息,其中一条为:Building Extensions for the Intel ...