嗨我正在做操作系統概念第9版第3章,有一個「創建了多少個進程,包括父進程?」問題讓我困惑。代碼是用Unix系統調用C語言編寫的,fork():Unix fork:創建了多少個進程?
#include <stdio.h>
#include <unistd.h>
int main(){
fork();
fork();
fork();
return 0;
}
這個問題怎麼回事?感謝
嗨我正在做操作系統概念第9版第3章,有一個「創建了多少個進程,包括父進程?」問題讓我困惑。代碼是用Unix系統調用C語言編寫的,fork():Unix fork:創建了多少個進程?
#include <stdio.h>
#include <unistd.h>
int main(){
fork();
fork();
fork();
return 0;
}
這個問題怎麼回事?感謝
fork();
第一叉從運行的進程(主)中創建新的進程。在系統中現在有兩個進程
fork();
這兩個進程都再次調用fork。因此創建了兩個新流程。所以總共有四個進程在系統中現在
fork();
現在每四個進程調用fork。所以又創建了四個新的流程。因此在fork()的最後一次調用之後創建總共八個進程。
這有什麼困惑嗎?你似乎已經明白了。 –
由fork創建的簡單流程是2^n,其中n =沒有fork調用。 –