APUE学习
1、fork函數父進程pid>0,子進程pid=0。
2、execlp函數可以執行從標準輸入讀入的命令。
3、內核時程序執行的唯一方法時調用一個exec函數。進程自愿終止的唯一方法時顯式或隱式掉哦那個_exit、_Exit或exit()。
4、main函數之前回啟動一個特殊的啟動例程,結束后會啟動終止處理程序。
5、進程存儲空間安排:
環境表和環境變量字符串位于頂部棧之上。
6、setjump和longjmp:可實現跨越函數的goto的功能。longjmp可以跳轉到setjump設定的位置。
7、僵死進程:一個已經終止,但是父進程尚未對其進行善后處理(獲取終止子進程的相關信息、釋放他仍占用的資源)的進程。
孤兒進程:指的是在其父進程執行完成或被終止后仍繼續運行的一類進程。這些孤兒進程將被init進程(進程號為1)所收養,并由init進程對它們完成狀態收集工作。
8、對于父進程已經終止的所有進程,父進程都改變為init進程。
9、exec不創建新進程,只是用磁盤上一個新程序替換了當前進程的正文段、數據段、堆段和棧段。
10、設置用戶ID或者設置組ID程序絕不應調用system函數。因為這個程序的超級用戶權限可能執行fork和exec之后仍被保持下來。應直接使用fork和exec,而且在fork之后,exec之前改回普通權限。
11、3種特殊字符可使終端驅動程序產生信號:1)中斷字符:delete或者是ctrl+c,產生SIGINT;2)退出字符:ctrl+\,產生SIGQUIT;3)掛起字符:ctrl+z,產生SIGTSTP。
12、會話:一個或多個進程組的集合。一個會話的幾個進程組可分為一個前臺進程組以及一個或多個后臺進程組。
13、作業控制:允許在一個終端上啟動多個作業(進程組),它控制哪一個作業可以訪問該終端以及哪些作業在后臺運行。
14、終端產生的信號總是從前臺進程組連接到實際進程,后臺進程的輸出是否出現在終端是可選擇的。
15、孤兒進程組:該組中每個成員要么是該組的一個成員,要么不是該組所屬會話的成員。POSIX.1要求向新孤兒進程組處于停止狀態的每一個進程發送掛斷信號,接著又向其發送繼續信號。處理了掛斷信號后,子進程繼續。
16、信號屬軟件中斷。可以被屏蔽以及阻塞。
17、互斥量、讀寫鎖、條件變量、自旋鎖、屏障的定義和使用。
18、守護進程:生存期長的一種進程,常在系統引導裝入時啟動,盡在系統關閉時才終止。守護進程沒有控制終端,且常用于服務器進程。
19、多線程程序推薦阻塞所有信號,然后創建一個線程處理信號。
20、IO多路轉接:構造一張描述符列表,然后調用一個函數,直到這些描述符中的一個已準備好的IO時,該函數才返回。poll、pselect和select這3個函數可以執行IO多路轉接。
21、記錄鎖:當第一個進程正在讀或修改文件的某個部分時,使用記錄鎖可以阻止其他進程修改同一文件區。
22、管道中fd0為讀而打開,fd1為寫而打開。
23、系統過濾程序從標準輸入讀取數據,向標準輸出寫數據。當一個過濾程序即產生某個過濾程序的輸入,又讀取過濾程序的輸出時,它就變成了協同進程。
24、慢系統調用:當阻塞于某個慢系統調用的一個進程捕獲某個信號且相應信號處理函數返回時,該系統調用可能返回一個EINTR錯誤。
總結
- 上一篇: 暗角教程,如何加镜头晕影暗角效果
- 下一篇: 计算机考研数学难,考研数学一考那些内容数