2014-05-17 70 views
1

我想知道是否必須等待()所有子進程在父程序中完成?在fork之後,我需要在父進程中等待()嗎?

我已經閱讀了關於fork()的手冊和一些在線資源,但是他們沒有一個提到在父級執行wait()。

但是,如果我沒有在父程序中等待,那麼進程不會終止,而只是在按Enter鍵之後纔會終止。

+1

它看起來像你是令人困惑的線程與進程... –

+0

Nah我不這麼認爲,只是一些草率寫作 – user2520938

回答

2

如果父進程沒有使用wait()家族的系統調用進行其子進程,它可能會首先死亡。

當父進程死亡時,它的所有子進程都將在進程樹中的PID = 1的進程init下移動。所以init是他們新的父母程序。


<Enter>觀察這種現象的原因(只是猜測,它可能是錯誤的),是因爲父進程比其子提前終止,所以之前的一些印在終端的提示孩子的輸出。當您按<Enter>時,將再次打印提示。仔細檢查輸出。

+1

謝謝你,這完全是你所說的終端的提示打印輸出中途的某處我錯過了它。 – user2520938

相關問題