Linux C 程序控制

2021-06-20 15:29:23 字數 1754 閱讀 9464

1.        程式—程序—程序id—pit_t型別。

2.        get pid();取得程序idgetppid();取得父程序id。

a)         getuid();geteuid();   getgid(); getegid(); 取得使用者id及組id。

3.        fork函式建立新的程序。 pid_tfork(void);

a)        fork函式不需要引數。

b)        對於父程序fork函式返回建立子程序pid號。

c)        對於子程序fork函式返回0, 系統0號程序為核心程序,以示區別。

d)        若建立子程序錯誤,則fork函式返回-1。

e)        建立子程序複製父程序程序空間,包括資料段和堆疊段。共享**段。

4.        vfork函式建立共享父程序空間的子程序,且子程序一定比父程序先執行。

5.        不要在任何函式呼叫中使用vfork函式,避免函式棧幀空間的多次返回。

6.        void exit(int);函式會深入核心登出掉程序的核心資料結構。並且釋放程序的資源。

a)        exit函式的引數表示退出的狀態。

7.        exit函式為封裝了linux系統呼叫_exit函式,exit函式在使用者空間做善後工作如清理使用者i/o緩衝區,將內容寫入磁碟等。以後進入核心釋放使用者程序的位址空間。

8.        除錯多程序:

a)        設定跟蹤流: set follow-fork-mode [parent|child]跟蹤流選項。

b)        set detach-on-fork [on|off] set指定的程序將被除錯,另乙個程序將被停止。

c)        attach命令:沒看懂!待查資料。

9.        exec搜尋檔案系統中的檔案,並將內容複製到exec函式的位址空間,取代原程序的內容。實現講磁碟中的程式載入到記憶體中。exec幾乎不改變程序的身份屬性。

a)        execl(); execle();execv();  execve(); execlp();  execvp();

10.    exech函式執行直譯器檔案(如shell指令碼)時,直譯器檔案中命令列引數在前,exec函式傳遞給新程式的命令列在後。

11.    使用system函式呼叫shell命令。

a)        int system(const char *cmdstring);

b)        system的返回狀態。

c)        system實現過程中呼叫fork及exec執行效率偏低,但是函式新增了出錯處理,訊號處理,及wait函式避免出現殭屍程序。

12.    wait函式等待子程序的退出,並獲得起退出的狀態資訊,但只能等待乙個結束的程序。

13.    waitpid函式等待乙個指定的程序結束。且可以不阻塞的等待乙個程序。

14.    當父程序呼叫fork()函式建立子程序,而不用wai函式取得子程序的結束狀態資訊時,殭屍程序會出現。殭屍程序放棄了幾乎所有系統資源包括程序空間,因而殭屍程序不能執行,雖然殭屍程序占用的記憶體微乎其微且不能被cpu呼叫,但是殭屍程序一直存在在系統中知道父程序取得結束狀態資訊。 linux有嚴格的程序數目限制,如果殭屍程序達到一定數目是,系統中將不能產生新的程序。

15.    linux中 init程序領養所有的孤兒程序,會永遠呼叫wait函式避免產生殭屍程序。

16.    wait3和wait4函式輸出錯誤的統計資訊。

Linux c 程序控制

getpid獲得程序識別碼 表頭檔案 include函式原型 pid t getpid void 返回值 目前程序的程序識別碼 getppid獲得父程序的程序識別碼 表頭檔案 include函式原型 pid t getppid void 返回值 目前程序的父程序識別碼 fork建立子程序 表頭檔案 ...

linux c程式設計 程序控制 四 程序關係

每乙個程序除了有乙個程序id外,還屬於乙個程序組。程序組是乙個或多個程序的集合,通常情況下,他們是在同一作業中結合起來的,同一程序組的個程序接受來自同一終端的各種訊號。每乙個程序組有乙個唯一的程序id。函式getpgrp 返 用程序的程序組id。include pid t getpgrp void ...

LInux C程序控制作業 2

編寫程式實現以下功能 1,在父程序中定義變數n,在子程序中對變數n進行 操作 並且列印變數n的值,列印子程序pid 2,在父程序中列印變數n的值,並且列印父程序pid。3,要求分別用fork和vfork建立子程序。vfork include include include include inclu...