12,988 views

The following C program is executed on a Unix/Linux system :

#include<unistd.h>
int main()
{
int i;
for(i=0; i<10; i++)
if(i%2 == 0)
fork();
return 0;
}

The total number of child processes created is ________________ .

edited by

5(0,2,4,6,8) times fork is called.
Total number of child process would be 2^5−1=31

HOW 0 is divided by 2 or a even no  is still a mystery right
fork will execute 5 times (i=0,2,4,6,8). so child processes created are 2^5-1=31

From 0 to 9, 0,2,4,6,8 are the values which will satisfy if condition. so fork will be called 5 times. total number of child processes will be 2^5-1=31
2^5 - 1 = 32 - 1 = 31 child processes.
by
fork is called at 0 , 2 ,4 ,6 ,8 i.e total 5 time

So total number of child is  2^5-1 = 31.
i is initialized as 0 and it should be incremented by 2 and should go up to less than 10.

consider this code:

for(i=0; i<10; i=i+2)

fork();

fork ( is a function) shall be called 5 times(i=0,2,4,6,8) equal to the no. of even numbers less than 10

∴ Total number of process 2*2*2*2*2 =32

Total number of child process shall be 32−1=31

5
12,790 views
6
7,488 views
7
16,982 views