APUE 第四章总结
第四章寫的真的好(先吹一波)
內(nèi)容概括:
這一章主要講解了stat里面的各個字段,以此講解unix的文件系統(tǒng)和一些和文件目錄有關(guān)的API
講解細致,stat函數(shù)可以獲取一個文件的狀態(tài)信息,包括:
1 文件類型和文件模式字和對文件的訪問權(quán)限
2 i節(jié)點編號
3 設(shè)備號
4 特殊文件的設(shè)備號
5 鏈接數(shù)量
6 uid
7 gid
8 文件長度
9 訪問時間
10 修改時間
11 狀態(tài)改變時間
12 字節(jié)塊的大小
13 字節(jié)塊數(shù)
主要內(nèi)容:
文件類型:
1 普通文件
2 目錄文件(只有內(nèi)核才能直接寫文件)
3 塊特殊文件 提供對設(shè)備帶緩沖的訪問
4 字符特殊文件 提供不帶緩沖的訪問
5 FIFO 命名管道
6 套接字 SOCKET
7 符號鏈接
提供了一些宏訪問
以及一些IPC對象,消息隊列,信號量,共享儲存對象
ID:
一個進程相關(guān)聯(lián)的ID往往有6個或更多
實際用戶ID:
實際組ID:
我們實際上是誰
有效用戶ID
有效祖ID
附屬組ID
用于權(quán)限檢查
保存的設(shè)置用戶ID
保存的設(shè)置祖ID
當(dāng)有效ID被替換時,這兩個字段保存有效iD
在st_mode字段中,有三個特殊的位,分別為設(shè)置用戶ID位,設(shè)置組ID位,黏著位
當(dāng)設(shè)置用戶ID位,設(shè)置組ID位,被設(shè)置時,當(dāng)一個進程訪問該文件時,相應(yīng)有效ID被設(shè)置位文件所有者ID位
文件訪問權(quán)限:
在st_mode字段中
u:rwx
g:rwx
o: rwx
訪問目錄去打開文件時,需要對目錄有執(zhí)行權(quán)限,所以也被成為搜索位
在目錄中創(chuàng)建一個新文件,必須對該目錄有寫權(quán)限和執(zhí)行權(quán)限
刪除文件時,同上
對一個文件進行操作時,內(nèi)核根據(jù)有效用戶id->有效組ID->其他用戶的順尋檢查
新文件和目錄的所有權(quán)(注意是ID,而不是文件權(quán)限):
新文件的用戶ID設(shè)置為進程的有效用戶ID
組ID:
可以是進程的有效組ID
可以是目錄的組ID
目錄規(guī)則相同
黏著位:
在以前的UNIX系統(tǒng)中,如果文件設(shè)置了這一位,那么在程序終止時,程序正文部分的一個副本被保存在交換區(qū)中,時的下次執(zhí)行時能較快的載入內(nèi)存
現(xiàn)在的已經(jīng)不需要這種技術(shù)了
有了新的功能:
如果目錄設(shè)置了該位:
只有對該目錄有寫權(quán)限的并且滿足(擁有此文件,擁有此目錄,超級用戶條件之一)才能刪除和重命名文件
文件系統(tǒng):
書上的是UFS文件系統(tǒng)
每一個分區(qū)是一個文件系統(tǒng)
目錄項指向Inode,inode指向數(shù)據(jù)塊或者目錄項
每一個inode有一個鏈接計數(shù),鏈接計數(shù)為0才刪除,這里是硬鏈接
inode中包含了文件有關(guān)的信息
目錄項中有文件名,i節(jié)點編號
數(shù)據(jù)項是文件真正的數(shù)據(jù)
符號鏈接:
與硬鏈接的區(qū)別:
硬鏈接指向i節(jié)點,且只能在同一文件系統(tǒng),只有超級用于才能指向目錄的硬鏈接
在使用文件的API時應(yīng)該注意是否跟隨符號鏈接
在出現(xiàn)循環(huán)時,如果時硬鏈接就比較難消除
但是因為unlink不跟隨符號鏈接,所以比較容易消除這種循環(huán)
API
access faccesssat
用實際用戶ID訪問
umask 設(shè)置文件模式創(chuàng)建屏蔽字(訪問權(quán)限)
chmod 三兄弟 改變訪問權(quán)限
chown四兄弟改變文件所有者
unlink解除一個鏈接
總結(jié)
以上是生活随笔為你收集整理的APUE 第四章总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: N56vz难以关闭触摸板的问题(转载)
- 下一篇: 【JAVA8】Set排序四种写法-倒序