天天看點

Unix進階程式設計第二,三章

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

繼續閱讀