程序的建立

2021-08-22 13:27:17 字數 967 閱讀 1609

fork():    用來建立新的程序;在父程序中返回子程序的程序號,在子程序中返回0,錯誤返回-1

表頭檔案:#include

#include

定義函式:pid_t fork(void)   pid_t:建立程序時會用到程序號的型別定義,實際上為int型別;

在fork()建立乙個程序的同時,子程序完全複製父程序的資源,產生乙個副本,但是採用寫時複製的策略,這樣可以延遲真正的資料複製,寫入資料後,意味著子父程序的資料開始不一致了,於是產生複製動作,每個程序拿到屬於自己的乙份,這樣就可以系統呼叫的開銷;

#include#include#include#includeint main()

else if(!pid)

else

count++;

printf("pid = %d,count = %d\n",getpid(),count);

return 0;

}

vfork():    用來建立新的程序;在父程序中返回子程序的程序號,在子程序中返回0,錯誤返回-1

表頭檔案:#include

vfork()與fork()不同的地方在於,用vfork建立的子程序與父程序共享記憶體空間,也就是說子程序完全執行在父程序的位址空間上,如果這是子程序修改了某個變數,這將影響到父程序;需要注意的是用vfork()建立的子程序必須顯示呼叫exit()來結束,否則子程序將不能結束,而fork()則不存在這個狀況;

殭屍程序:

殭屍程序就是已經結束了的程序,但是還沒有從程序表中刪除,它放棄了幾乎所有記憶體空間,沒有任何可執行**,也不能被排程,它需要它的父程序為他收屍,如果父程序沒有安裝sigchld訊號處理函式呼叫wait()或者waitpid()等待子程序結束,又沒有顯示忽略該訊號,那麼它就一直保持殭屍狀態。如果父程序結束了,那麼init程序會接手這個程序為它收屍,它還是可以被清除的。但是,如果父程序是乙個迴圈,不會結束,那麼子程序就會一直保持殭屍狀態。

Linux程序 程序的建立

今天學習了linux的程序建立的基本原理,是基於0.11版本核心的。下面對其作一下簡單的總結。一 linux程序在記憶體中的相關資源 很容易理解,linux程序的建立過程就是記憶體中程序相關資源產生的過程,那麼linux程序在記憶體中有哪些相關資源呢?1 task陣列中的一項 乙個指標指向程序的ta...

程序的建立

程序的建立 1.詳解程序建立的幾類函式的說明 fork vfork exec system?1 獲取id include include pid t getpid void 獲取本程序id。pid t getppid void 獲取父程序id 2 啟動程序 a pid tfork void 功能 建...

程序建立多少執行緒,程序建立的過程,執行緒建立的過程

程序能建立多少執行緒與程序邏輯位址空間 32位位址長度的話,就是4gb 更具體地說應該是有程序位址空間中記憶體對映區的大小有關,執行緒棧是通過mmap系統呼叫在記憶體對映區建立的。和執行緒棧 1mb 的大小有關。程序建立的過程 unix和linux採用另一種方式 它把建立程序分成兩步,fork 和e...