1 POSIX 可移植的作業系統接口。 2 限制 由于大量标準化的工作,若幹可移植的方法确定幻數和實作定義的限制。 (1)編譯時限制(2)運作時限制 這兩類是必須限制。 ISO C限制 ISO C限制是編譯時限制。<limits.h>中定義了C标準限制。 POSIX限制
3 基本系統資料類型 頭檔案<sys/types.h>中定義了某些與實作有關的資料類型。他們都是用typedef來定義的,絕大多數以_t結尾。 1 大多數檔案I/O隻用5個函數:open,read,write,lseek,close. 2 不帶緩沖 每個read和write都隻調用核心中的一個系統調用。不帶緩沖的I/O不是ISO C 的組成部分,他們是POSIX.1和UNIX Specification的組成部分。 3.2檔案描述符 1 一個非負整數,打開和建立一個檔案時由系統産生,标志此檔案,并可傳給write和read引用。 其中0與程序的标準輸入關聯,1與标準輸出關聯,2與标準出錯輸出關聯。并換成常量符号,在<unistd.h>中定義。其變化範圍是0~OPEN_MAX. 3.3 open函數
對于open函數,當建立新的檔案才用第三個參數。 pathname是檔案的名字。
這三個常量必須選一個,其他可選常量在p60 3.4 creat函數
3.5close函數
當一個程序終止時,核心自動關閉它打開的檔案,是以許多程式不顯式用close關閉檔案。 3.6lseek函數 用于設定偏移量度量從檔案開始處計算的位元組數,開始預設設為0.
對于某些裝置偏移量可以是負值,是以檢測是否失敗,應該用-1. 3.7 read函數
3.8write函數
3.10 檔案共享
每個程序都有一個檔案表,但共用一個v節點。 3.11 原子操作 核心會對每次write時,将檔案改到檔案尾,已解決多個程序寫的邏輯問題。
3.12 dup和dup2函數
都是用來複制現存的檔案描述符。
3.13
sync函數隻是将所有修改過的塊緩沖區排入寫隊列。 3.14 fcntl函數 用于改變已打開檔案的性質。
3.15 ioctl函數
3.16 /dev/fd 打開檔案/dev/fd/n等效于複制描述符n