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解除一個鏈接
總結
以上是生活随笔為你收集整理的APUE 第四章总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: N56vz难以关闭触摸板的问题(转载)
- 下一篇: 【JAVA8】Set排序四种写法-倒序