Linux程式設計之fork

2021-10-11 16:15:47 字數 780 閱讀 9408

fork()建立乙個子程序

建立失敗返回負值

同時會有不同的錯誤碼(errno),eagain(系統程序個數限制)、enomem(申請記憶體失敗)、enosys(系統平台不支援)。

建立成功將會返回兩個值

=0;子程序的返回值,說明當前程式在子程序執行

>0; 父程序的返回值,說明當前程式在父程序執行,返回值為生成子程序的pid值

wait()父程序阻塞等待子程序的狀態變化,通常和fork一起使用.

簡例:

#include #include #include #include int main()

else if(ret == 0)

else

//子父程序都會執行

printf("my pid is %d.\n",getpid());

while(1)

sleep(1);

}return 0;

}

執行結果:

執行ps axf可以看到兩個程序的關係

使用kill命令將子程序殺死,這時wait()能捕捉到子程序狀態發生變化

fork程式設計之exec函式詳解

基本概念 用fork函式建立新的子程序後,子程序往往要呼叫一種exec函式以執行另乙個程式。當程序呼叫一種exec函式時,該程序執行的程式完全替換為新程式,而新程式則從其main函式開始執行。因為呼叫exec並不建立新程序,所以前後的程序id並未改變。exec只是用磁碟上的乙個新程式替換了當前程序的...

linux程式設計之mprotect

mmap 的第三個引數指定對記憶體區域的保護,由標記讀 寫 執行許可權的 prot read prot write 和 prot exec 按位與操作獲得,或者是限制沒有訪問許可權的 prot none。如果程式嘗試在不允許這些許可權的本地記憶體上操作,它將被 sigsegv 訊號 segmenta...

fork程式設計實戰

include pid t fork void 由fork建立的新程序被稱為子程序。fork函式被呼叫一次,但返回兩次。兩次返回的唯一區別是子程序的返回值是0,而父程序的返回值是子程序的程序id。將子程序id發回給父程序的理由是 因為乙個程序的子程序可以有多哥,並且沒有乙個函式使乙個程序可以獲得其所...