[英]Fork how many processes created confused
說我有以下程序
pid_t pid = fork(); // fork #1
pid = fork(); // fork #2
所以現在我們有:
我的困惑是在第一次分叉之后,我們將有兩個進程 P1(父)和 C1(子)。 每個進程將執行第二個 fork 一次。 所以我們不應該有 6 個進程,因為 P1 還會創建兩個進程和 C1 嗎? 還是只有P1可以執行第二個分叉創建P2 C2
一個好的一般規則是一個進程調用fork
但兩個進程從它返回(當然,假設它有效)。
從fork
返回后,兩個返回進程都繼續執行,我懷疑您根據您的困惑沒有完全理解這一點。
這意味着您在第一個 fork 中從一個進程變為兩個進程,然后這些進程中的每一個再次調用fork
,因此進程計數加倍然后又加倍(1 - > 4)。 基本上:
1 -> fork#1 -+-> 1 -> fork#2 -+-> 1
| |
| +-> 3
|
+-> 2 -> fork#2 -+-> 2
|
+-> 4
C1 不會執行兩次 fork,只會執行一次。 P1 將執行它兩次,這將導致 C1 和 C2。 C1 將只執行第二個 fork。 最終結果是 4 個過程。 這是一個可視化:P1 -> C2 第二叉 | 第一個 V fork C1 -> C3 子進程的第二個 fork
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.