2016-02-07 161 views
1

可以說,我有兩個功能X & Ÿ和這兩個功能調用另一個功能ž如何選擇等待還是不等待父進程?

我在這個功能中發揮作用z

我想要做的是以下幾點。

  1. 如果我調用的函數是X。等待孩子完成 父進程

  2. 否則如果調用函數是y。不要等待孩子,(好像它 正在同時運行)。

我該如何實現這樣的行爲,如果它甚至是可能的?

還是我得把兩個獨立的功能Z1 & Z2

其中Z1我叉,等待和Z2我叉,我不等待。

,我想這樣做在C

+2

將「等待」布爾值傳遞給z有什麼問題? –

回答

1

你可以通過指示是否z應等待孩子的參數z。或者,您可以讓z返回小孩的進程ID而無需等待它。然後,你可以手動調用waitpidx明確等待通過z分叉斷過程:

waitpid(z(), NULL, 0); 

當然,你需要做的錯誤處理爲好。

+0

當我選擇不等待時,我將如何終止一個程序。它最終會凍結。我怎麼能終止它 – Pro

+0

@Pro我需要更多的信息來回答這個問題。你能發佈展示這個問題的代碼嗎?如果你爲此提出一個新問題,這可能是最好的。 – fuz

+0

基本上,我在包含許多命令從一個文件的行上執行execvp。我試圖一起運行所有的命令。以便結果可以混合。一切工作正常,只是當它完成後它不會退出終端程序 – Pro