2013-03-25 57 views
1

我有一個execve系統調用來覆蓋我的curernt程序與另一個。代碼工作正常,但我的要求是通過fork系統調用來更改此execve系統調用。我正在嘗試如下:execve:將execve調用轉換爲叉

pid_t child_pid; 
child_pid = fork(); 
if(child_pid == 0) { 
     if (-1 == execve(...)) //Normal previous execve call 
     { 
      ............. 
     } 
} 
else 
{ //fork parent process 
exit(0); 
} 

我不確定當我們用fork替換execve系統調用時應該注意哪些事情。在我的子進程中,我調用現有的execve調用來維持原始流(如果沒有fork),但是父進程應該怎麼做 - 我通常應該退出還是需要等待子進程退出/死亡。 execve調用將當前進程與新進程重疊,因此不存在父進程/子進程的問題。

回答

0

如果孩子的退出狀態需要知道,或者如果有後子進程退出要執行一些操作,調用wait()父。

如果不需要上述任何一種,則可以退出父進程。 orphaned程序將重新編號爲init,因此不會產生不利影響。

0

這取決於你。如果你不需要等待,那麼你可以退出,在這種情況下,子進程將成爲孤兒。