fork 與程序管理

2021-09-24 20:47:22 字數 587 閱讀 4514

fork用於複製程序,建立乙個子程序,被複製的程序稱為父程序,父程序與子程序併發執行

先複製乙個程序控制塊pcb(是乙個結構體,在linux中被稱為程序描述符),再複製程序實體

fork完後,父程序中返回值為pid_t型別,值為子程序的pid,子程序中值為0

在兩個程序中,邏輯位址相同,實體地址不一定相同,沒有可比性

重新整理緩衝區的條件:1 緩衝區放滿,2 強制重新整理(fflush(stdout)或者"\n"),3 程式要退出

exit(0)退出程序,相當於return

寫時拷貝,以頁為單位,當需要修改時,拷貝乙個頁面進行修改再使用

僵死程序

當乙個程序終結時,核心必須釋放它所占有的資源,並告知其父程序,當其父程序先終結時,此時該程序是孤兒程序,將為其分配乙個父程序

int i = 0;

for( ; i < 2; i++)

執行將會列印出8個a

int i = 0;

for( ; i < 2; i++)

執行將會列印出6個a

fork() || fork();

printf(「a\n」);

執行將會列印出3個a

程序管理之fork函式

include include pid t fork void fork函式在父程序中返回子程序的pid,在子程序中返回0。注意在子程序中返回的0,並不是子程序的pid,子程序的pid在父程序的返回值中儲存。而子程序的返回值是為了標識它是子程序,用來區分父子程序的。那麼為什麼這樣設計父子程序的返回值...

程序管理之fork函式

include include pid t fork void fork函式在父程序中返回子程序的pid,在子程序中返回0。注意在子程序中返回的0,並不是子程序的pid,子程序的pid在父程序的返回值中儲存。而子程序的返回值是為了標識它是子程序,用來區分父子程序的。那麼為什麼這樣設計父子程序的返回值...

fork程序與快取

題目描述 請問下面的兩個程式各一共輸出多少個 include include include int main void return0 include include include int main void return0 答案 第乙個程式輸出8個 第二個程式輸出6個 解析 網路 fork的重...