unix環境高階程式設計

2021-07-16 20:32:08 字數 1092 閱讀 8605

檔案描述符file descriptor通常是乙個小的非負整數,核心用以標識乙個特定程序正在訪問的檔案。當核心開啟乙個現有檔案或建立乙個新檔案時,它都返回乙個檔案描述符。在讀寫檔案時,可以私用這個檔案描述符。

按管理,每當執行乙個新程式時,所有的shell都為其開啟了3個標準檔案描述符:標準輸入,標準輸出,標準錯誤。

不帶緩衝的i/o。函式open, read, write, lseek以及close提供了不帶緩衝的i/o。這些函式都使用檔案描述符。

程式是乙個儲存在磁碟上某個目錄總的可執行檔案。核心使用exec函式將程式讀入記憶體,並執行程式。

unix系統確保每個程序都有乙個唯一的數字識別符號,稱為程序id,程序id總是乙個非負數。

有三個用於程序控制的主要函式:fork, exec, waitpid

呼叫fork建立乙個新進場,新程序是呼叫程序的乙個副本,我們稱呼叫程序為父程序,新建立的程序為子程序。fork對父程序返回新的子程序的程序id,對子程序則返回0。因為fork建立了乙個新程序,所以說它被呼叫一次,但返回兩次。

ctrl + d 檔案結束符。

於程序相同,執行緒也用id標識,但是執行緒id只在它所屬的程序內起作用,乙個程序中的執行緒id在另乙個程序中沒有意義。當在乙個程序中對某個特定執行緒進行處理時,我們可以使用該執行緒id引用它。

訊號signal用於通知程序發生了某種情況。一般需要使用者自己編寫乙個函式用來處理訊號(如執行了除0操作,則當前程序傳送sigfpe浮點異常訊號),這時可以提供乙個函式,訊號發生時呼叫該函式,這稱為捕捉該訊號。

終端鍵盤上有兩種方式產生訊號,分別稱為中斷鍵ctrl + c,另乙個是退出鍵 ctrl + \   他們被用於終端當前執行的程式。另一種產生訊號的方法是呼叫kill函式,在乙個程序中呼叫此函式就可以向另乙個程序傳送乙個訊號。當然,在向另乙個程序傳送訊號時,我們必須是那個程序的所有者或者超級使用者。

unix系統中time_t型別表示日曆時間,clock_t用來表示cpu時間。

系統呼叫和庫函式。

程序控制系統呼叫(fork, exec 和wait)通常由使用者應用程式提供了一些庫函式,如system, popen。

程序id雖然是唯一的,但是卻是可以復用的。當乙個程序終止後,其程序id就成為了復用的候選者。

unix環境高階程式設計

unix 日曆時間 自1970 年1 月1 日00 00 00 以來的國際標準時間 utc 程序時間 cpu 時間 時鐘時間 程序執行時間的總量。使用者cpu 時間 執行使用者指令時間量。系統cpu 時間 執行核心所經歷時間。命令 time 第三章至第七章 原子操作 任何乙個要求多於1 個函式呼叫的...

UNIX環境高階程式設計

本書是被譽為unix程式設計 聖經 的advanced programming in the unix environment一書的更新版。在本書第1版出版後的十幾年中,unix行業已經有了巨大的變化,特別是影響unix程式設計介面的有關標準變化很大。本書在保持了前一版風格的基礎上,根據最新的標準對...

Unix 環境高階程式設計

本書描述了unix系統的程式設計介面 系統呼叫介面和標準c庫提供的很多函式。與大多數作業系統一樣,unix為程式設計師執行提供了大量的服務 開啟檔案,讀檔案,啟動乙個新程式,分配儲存區以及獲得當前時間等。這些服務被稱為系統呼叫介面 system call inte ce 另外,標準c庫提供了大量廣泛...