以下僅列出相對比較重要的內容
1.檔案和目錄
1).檔案系統
Unix檔案系統是目錄和檔案組成的一種階層。目錄是一個包含許多目錄項的檔案,而邏輯上,可以認為每個目錄項都包含著檔案名稱。檔案屬性是指檔案類型(是普通檔案還是目錄)、檔案的大小、檔案的所有者、檔案許可權以及檔案的修改時間等等。如擷取相應資訊可以用stat和fstat函數
2).檔案名稱
3).路徑名
由斜線和檔案名稱組成的序列構成路徑名,以斜線開頭的路徑名稱為絕對路徑名,否則為相對路徑名。註:檔案根系統的名字(/)是個特殊的絕對路徑,不含檔案名稱
4).工作目錄
每一個進程都有一個工作目錄(又稱當前工作目錄),所有絕對路徑名都從工作目錄開始
2.輸入和輸出
1).檔案描述符
檔案描述符通常是一個小的非負整數,核心用它標識一個特定進程正在訪問的檔案
2).標準輸入、標準輸出和標準標準出錯
當運行一個新程式,所有shell都為其開啟三個檔案描述符標準輸入、標準輸出和標準標準出錯
3.程式與進程
1).進程式控制制
對於進程式控制制,一般由三個主要函數:fork,exec和waitpid(其中exec有六種變體)。
2).線程ID和線程
線程ID與進程ID有相同的作用,但線程ID只在他所屬進程內起作用
在一個進程內的所有線程共用同一地址空間、檔案描述符、棧以及與進程相關的屬性,因為各個線程會訪問同一資源,所以要進行線程同步。
4.出錯處理
當Unix出錯時,常常返回一個負值,而且整型變數errorn通常被設定為含有附加資訊的一個值,註:在多線程環境中,多個線程共用進程地址空間,每個線程都有屬於它自己的局部errorn以避免一個線程幹擾另一個線程
C標準有兩個函數可以列印出errorn資訊
#include <string.h>char *strerror(int errnum);//返回指向錯誤資訊字串的指標
#include <stdio.h>void perror(const char *msg);//在標準輸出上產生一條錯誤資訊
5.使用者標識
1).使用者ID
2).組ID
3).附加組ID(一個使用者可以屬於多個組中)
6.訊號
用來通知進程有情況發生的一種技術。進程收到訊號後有三種選擇1).忽略 2).預設處理方法 3).提供一個函數當訊號發生時調用(訊號捕捉)。
7.時間值
Unix有兩種不同的時間值
1).日曆時間 用資料類型time_t ,記錄著最近一次的修改時間
2).進程時間 用資料類型clock_t,度量進程使用的中央處理機資源
度量一個進程的時間,Unix使用三個進程時間值:
1).時鐘時間 (牆上時鐘時間) 它是進程已耗用時間的總量,值與系統同時啟動並執行進程數有關
2).使用者CPU時間 執行使用者指令的時間
3).系統CPU時間 該進程實行核心程式所經曆的時間
8.系統調用和庫函數
系統調用是在核心空間中運行。庫函數封裝了系統調用,運行在使用者空間。