创建了多少子进程?

时间:2017-02-05 07:47:59

标签: c operating-system fork nested-loops

for(i=0;i<5;i++)
for(i=0;i<5;i++) 
fork();

上面的代码中创建了多少子进程?

我的尝试:

我首先解决了内部循环问题,总共有32个进程,其中31个是子进程和1个父进程。

然后,我去了外循环,循环5次,从而产生31 * 5 = 155个子进程。

我做对了吗?

1 个答案:

答案 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-loopfork()n^2次调用,因此创建的进程总数不会是,

2^(n^2) - 1

对于此类问题,重要的是计算fork()被调用的次数。

对于您的案例n=5,所以子流程的总数不会是2^25 - 1