for(i=0;i<5;i++)
for(i=0;i<5;i++)
fork();
上面的代码中创建了多少子进程?
我的尝试:
我首先解决了内部循环问题,总共有32个进程,其中31个是子进程和1个父进程。
然后,我去了外循环,循环5次,从而产生31 * 5 = 155个子进程。
我做对了吗?
答案 0 :(得分:0)
for(int i=0; i<n; i++)
fork();
对于这种情况,创建的进程总数始终为2^n - 1
,因为fork()
将在n
时间内调用。
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
fork();
对于这个双for-loop
,fork()
被n^2
次调用,因此创建的进程总数不会是,
2^(n^2) - 1
对于此类问题,重要的是计算fork()
被调用的次数。
对于您的案例n=5
,所以子流程的总数不会是2^25 - 1
。