10.6 讀取檔案元資料
10.7 讀取目錄的內容
10.8 共享檔案
10.9 io重定向
10.10 標準io
10.11 綜合:我該使用哪些io函式?
10.1 unix io
linux shell 建立的每個程序開始時都有三個開啟的檔案:
改變當前的檔案位置
讀寫檔案
關閉檔案。
10.2 檔案
目錄(directory)
可以用 mkdir 命令建立乙個目錄,用 is 檢視其內容,用 rmdir 刪除該目錄。
套接字(socket)
linux 核心將所有檔案都組織成乙個目錄層次結構(directory hierarchy),下圖顯示了linux 系統的目錄層次結構的一部分。
絕對路徑名(relative pathname)
10.3 開啟和關閉檔案
mode 引數指定了新檔案的訪問許可權,而每個程序可通過umask
函式來設定使用者預設許可權的補碼,則檔案最終的許可權是通過mode & ~umask
確定的。
最後,程序通過呼叫 close 函式關閉乙個開啟的檔案。
10.4 讀和寫檔案
write 函式從記憶體位置 buf 複製至多 個位元組到描述符 fd 的當前檔案位置
在某些情況下,read 和 write 傳送的位元組比應用程式要求的要少(不足值問題)
從終端讀文字行。
讀和寫網路套接字(socket)。
在x86-64中,size_t被定義為unsigned long,而 ssize_t被定義為long。
10.5 用rio包健壯地讀寫
帶緩衝的輸入函式。
10.5.1 rio 的無緩衝的輸入輸出函式
實現:
10.5.2 rio 的帶緩衝的輸入函式
rio_readnb
緩衝區格式
typedef
struct
rio_t;
void
rio_readinitb
(rio_t *rp,
int fd)
10.6 讀取檔案元資料
其中st_size
包含了檔案的位元組數大小
st_mode
編碼了檔案訪問許可位,我們可以通過sys/stat.h
中定義的巨集來確定該部分的資訊:
10.7 讀取目錄的內容
10.8 共享檔案
檔案表(file table)。
v-node 表(v-node table)。
此三者結構:
10.9 io重定向
10.10 標準io
標準 i/o 庫將乙個開啟的檔案模型化為乙個流。對於程式設計師而言,乙個流就是乙個指向 file 型別的結構的指標。每個 ansi c 程式開始時都有三個開啟的流 stdin、stdout和 stderr,分別對應於標準輸人、標準輸出和標準錯誤
10.11 綜合:我該使用哪些io函式?
函式選用標準\建議
g3: 對網路套接字的 i/o 使用 rio 函式。
對於標準io來說,一般認為是全雙工的,除以下兩種情況
限制二:跟在輸入函式之後的輸出函式。
CSAPP 第1章筆記
當我們對系統的某個部分加速時,其對系統整體效能的影響取決於該部分的重要性和加速程度。若系統執行某應用程式需要時間為to ldt ol d。假設系統某部分所需執行時間與該時間的比例為 而該部分效能提公升比例為 k k 即該部分初始所需時間為 t old to ld t old,現在所需時間為 told...
CSAPP複習之系統級別I O
基於連線 當前檔案位置指標k seek 讀寫 目錄 每個目錄至少含兩個條目 套接字管道等此處不討論 普通檔案 目錄當前工作目錄 絕對路徑 從root開始 一直到當前檔案 相對路徑 用.和 失敗返回 1 例子int main void 先從kb輸入到核心的乙個buffer之後才由程式去讀取 不足值 所...
第10章 系統日誌管理
系統裡的任何操作 任何的模組的訪問 任何服務的呼叫,使用者的登入情況等等都會被記錄起來,方便日後追查之用。若記錄日誌影響了系統的整體效能,不需要進行日誌記錄功能,可以在配置檔案中設定開關選項,可以取消日誌記錄功能。日常應用中,不建議去掉日誌記錄功能,日誌管理模組主要由使用者賬戶訪問情況 按使用者賬戶...