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發回給父程序的理由是 因為乙個程序的子程序可以有多哥,並且沒有乙個函式使乙個程序可以獲得其所...