APUE 第四章总结

第四章写的真的好(先吹一波)

内容概括:

这一章主要讲解了stat里面的各个字段,以此讲解unix的文件系统和一些和文件目录有关的API
讲解细致,stat函数可以获取一个文件的状态信息,包括:
1 文件类型和文件模式字和对文件的访问权限
2 i节点编号
3 设备号
4 特殊文件的设备号
5 链接数量
6 uid
7 gid
8 文件长度
9 访问时间
10 修改时间
11 状态改变时间
12 字节块的大小
13 字节块数

主要内容:

文件类型:

1 普通文件
2 目录文件(只有内核才能直接写文件)
3 块特殊文件 提供对设备带缓冲的访问
4 字符特殊文件 提供不带缓冲的访问
5 FIFO 命名管道
6 套接字 SOCKET
7 符号链接
提供了一些宏访问
以及一些IPC对象,消息队列,信号量,共享储存对象

ID:

一个进程相关联的ID往往有6个或更多
实际用户ID:
实际组ID:
我们实际上是谁

有效用户ID
有效祖ID
附属组ID
用于权限检查

保存的设置用户ID
保存的设置祖ID
当有效ID被替换时,这两个字段保存有效iD

在st_mode字段中,有三个特殊的位,分别为设置用户ID位,设置组ID位,黏着位
当设置用户ID位,设置组ID位,被设置时,当一个进程访问该文件时,相应有效ID被设置位文件所有者ID位

文件访问权限:

在st_mode字段中
u:rwx
g:rwx
o: rwx

访问目录去打开文件时,需要对目录有执行权限,所以也被成为搜索位
在目录中创建一个新文件,必须对该目录有写权限和执行权限
删除文件时,同上

对一个文件进行操作时,内核根据有效用户id->有效组ID->其他用户的顺寻检查

新文件和目录的所有权(注意是ID,而不是文件权限):

新文件的用户ID设置为进程的有效用户ID
组ID:
可以是进程的有效组ID
可以是目录的组ID
目录规则相同

黏着位:
在以前的UNIX系统中,如果文件设置了这一位,那么在程序终止时,程序正文部分的一个副本被保存在交换区中,时的下次执行时能较快的载入内存
现在的已经不需要这种技术了
有了新的功能:
如果目录设置了该位:
只有对该目录有写权限的并且满足(拥有此文件,拥有此目录,超级用户条件之一)才能删除和重命名文件

文件系统:
书上的是UFS文件系统
每一个分区是一个文件系统
目录项指向Inode,inode指向数据块或者目录项
每一个inode有一个链接计数,链接计数为0才删除,这里是硬链接
inode中包含了文件有关的信息
目录项中有文件名,i节点编号
数据项是文件真正的数据

符号链接:
与硬链接的区别:
硬链接指向i节点,且只能在同一文件系统,只有超级用于才能指向目录的硬链接
在使用文件的API时应该注意是否跟随符号链接
在出现循环时,如果时硬链接就比较难消除
但是因为unlink不跟随符号链接,所以比较容易消除这种循环

API

access faccesssat
用实际用户ID访问

umask 设置文件模式创建屏蔽字(访问权限)

chmod 三兄弟 改变访问权限

chown四兄弟改变文件所有者

unlink解除一个链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值