我想知道是否必須等待()所有子進程在父程序中完成?在fork之後,我需要在父進程中等待()嗎?
我已經閱讀了關於fork()的手冊和一些在線資源,但是他們沒有一個提到在父級執行wait()。
但是,如果我沒有在父程序中等待,那麼進程不會終止,而只是在按Enter鍵之後纔會終止。
我想知道是否必須等待()所有子進程在父程序中完成?在fork之後,我需要在父進程中等待()嗎?
我已經閱讀了關於fork()的手冊和一些在線資源,但是他們沒有一個提到在父級執行wait()。
但是,如果我沒有在父程序中等待,那麼進程不會終止,而只是在按Enter鍵之後纔會終止。
如果父進程沒有使用wait()
家族的系統調用進行其子進程,它可能會首先死亡。
當父進程死亡時,它的所有子進程都將在進程樹中的PID = 1的進程init
下移動。所以init
是他們新的父母程序。
我猜你<Enter>
觀察這種現象的原因(只是猜測,它可能是錯誤的),是因爲父進程比其子提前終止,所以之前的一些印在終端的提示孩子的輸出。當您按<Enter>
時,將再次打印提示。仔細檢查輸出。
謝謝你,這完全是你所說的終端的提示打印輸出中途的某處我錯過了它。 – user2520938
它看起來像你是令人困惑的線程與進程... –
Nah我不這麼認爲,只是一些草率寫作 – user2520938