系统编程 笔记4

在这里插入图片描述文件大致组成如图
inode:本质是一个结构体,储存文件的属性信息。如:权限,类型,大小。。。。也叫文件属性管理结构,大多数的inode储存在磁盘上。

dentry(目录项):本质依然是结构体,其中重要的成员变量有两个{文件名,inode……},文件的内容是保存在磁盘中的。

所以一个文件描述主要就由上面两个东西组成。

stat函数:获取文件属性

int stat(const *path, struct stat *buf);

参数:

path:文件路径

buf:传出参数,存放文件属性,inode结构体指针。

返回值:

成功:0

失败:-1 errno

用宏函数来判断文件是什么(下面代码块中的参数m用的就是结构中的.st_mode成员)

           S_ISREG(m)  is it a regular file?

           S_ISDIR(m)  directory?

           S_ISCHR(m)  character device?

           S_ISBLK(m)  block device?

           S_ISFIFO(m) FIFO (named pipe)?

           S_ISLNK(m)  symbolic link?  (Not in POSIX.1-1996.)

           S_ISSOCK(m) socket?  (Not in POSIX.1-1996.)

lstat函数和stat函数基本一样,唯一不同的是,lstat不会穿透符号链接,stat会穿透符号链接(软连接)cat vim都会穿透符号链接

文件权限16位

前四位是文件类型 后三位特殊权限 最后九位分别是U(所有者),G(同组用户),O(其他人)的rwx

S_IFMT可以看为一个掩码,屏蔽低12位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值