這是最近GATE入學考試的一個問題。
的方法執行的代碼C程序中的fork()
fork();
fork();
fork();
創建子進程的總數是
(A)3(B)4(C)7(d)8。
我的回答是(A)3.
我的看法是,在每個fork()之後,將創建一個子進程並且父進程的執行將正常繼續。從教練的機構
不可靠的答案(沒有任何解釋)爲(C)7.
我覺得他們處理每一個叉將創建一個子進程和新的父進程。而且他們也計算了所有的父母程序。 [我不允許發佈圖片,但我的朋友在圖表中解釋了一個樹,每個左邊的節點在兩個節點中分叉。因此左邊的4個父節點和右邊的3個子節點。] 但問題清楚地提到了子進程。而且我不認爲這個父進程是新創建的。
有人可以解釋一些分叉基本原理,並請妥善解決上述問題。
P.S.如果編程語言在分岔概念上有所不同,那麼按照教學大綱,這應該是C或C++程序。
第一進程可創建子進程的去'fork()的'自己。你也應該數這些。 – 2012-02-15 19:13:24
不,分叉是一個操作系統的概念 - 編程語言無關緊要。 – Rup 2012-02-15 19:17:09
這說明了爲什麼多項選擇題在辯解中表現出理解。如果你必須寫一個答案來解釋你是如何得到答案的,那麼即使你從「官方答案」中得出了不同的結論,你也可以得到理解這些概念的功勞。例如,兒童進程的孩子是否被計算在內?它改變了要給出的答案。 – 2012-02-15 19:23:06