第二章 文件操作
1. 在UNIX系統(tǒng)中觅够,對文件的操作方法有兩種:基于標準庫函數(shù)的文件操作和基于系統(tǒng)調用的文件操作赏陵,二者應用不同势腮,各具優(yōu)勢。
2. UNIX系統(tǒng)把數(shù)據(jù)存放在文件中,可以通過系統(tǒng)調用來操作文件,這些系統(tǒng)調用有open歹茶、create、read你弦、write惊豺、lseek和close。
3. 進程對文件的讀/寫都要通過文件描述符禽作,文件描述符表示文件和進程之間的連接尸昧。
4. 每次系統(tǒng)調用都會導致目態(tài)(用戶態(tài)),與管態(tài)(核心態(tài))之間的切換以及內核代碼的執(zhí)行旷偿,所以盡量減少程序中系統(tǒng)調用發(fā)生的次數(shù)有助于提高程序的運行效率烹俗。
5. 程序可以通過緩沖技術來減少程序調用的次數(shù),僅當寫緩沖區(qū)滿或讀緩沖區(qū)為空時才調用內核服務萍程。
6. UNIX內核可以通過內核緩沖區(qū)來減少訪問磁盤I/O的次數(shù)衷蜓。
7. 磁盤上有文件和目錄,文件和目錄都是有內容和屬性的尘喝。文件的內容可以是任意的數(shù)據(jù)磁浇,而目錄的內容只能是文件名或目錄名的列表。
8. 目錄中的文件名或目錄名指向文件或其他目錄朽褪,內核提供了系統(tǒng)調用來讀取目錄的內容置吓,以及讀取和修改文件的屬性。
9. 文件的類型缔赠,文件的訪問權限和特殊屬性衍锚,被編碼到一個十六位整數(shù)中,可以通過掩碼技術來讀取這些信息 嗤堰。
10. UNIX文件系統(tǒng)包含3個主要部分:超級塊戴质、i節(jié)點表和數(shù)據(jù)區(qū)域。文件內容踢匣,存儲在數(shù)據(jù)區(qū)告匠,文件屬性存儲在i節(jié)點上。i節(jié)點是文件的唯一標識离唬。
11. 相同的i節(jié)點可能以不同的名字在若干個目錄中出現(xiàn)后专。每個入口被稱為指向文件的硬鏈接。符號連接是通過文件名引用文件输莺,而不是i節(jié)點號戚哎。
12. 若干個文件系統(tǒng)的目錄樹可被整合成一棵樹裸诽。內核將一個文件系統(tǒng)的目錄連接到另一個文件系統(tǒng)的根的操作稱為裝載(掛載)。
13. 磁盤文件和設備文件都有名字型凳,屬性和權限丈冬。普通的文件系統(tǒng)調用open、create甘畅、read殷蛇、write、lseek和close均可被應用于設備文件橄浓。文件權限位以同樣的方式應用于控制設備文件和磁盤文件的訪問粒梦。
14. 在處理和傳輸數(shù)據(jù)方面,到磁盤文件的連接不同于到設備文件的連接荸实。內核中管理與設備連接的代碼被稱為設備驅動程序匀们。通過調用fcntl和ioctl函數(shù),進程可以讀取和改變設備驅動程序的設置准给。
15. 函數(shù)tcgetattr和函數(shù)tcsetattr專門用來提供對終端驅動器的控制泄朴。