2017-02-05 5 views
-1
for(i=0;i<5;i++) 
for(i=0;i<5;i++) 
fork(); 

Сколько дочерних процессов создано в вышеуказанном коде?Сколько дочерних процессов создано?


Моя попытка:

я сначала решить внутреннюю петлю, и получил всего 32 процессов, в которых 31 являются дочерние процессы и 1 родительский процесс.

Затем я отправился на внешний цикл, который петли 5 раз, таким образом производя 31 * 5 = 155 дочерних процессов.


Есть ли у меня это право?

+0

Почему вы это делаете? – byxor

ответ

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.

Смежные вопросы