-1

How many processes are created when running the following program ? I can not solve. I would appreciate if you help

int main()
{ 
   int i;
   for (i=fork(); i<2; i++ )
      fork();
}

1 Answers1

-1

fork() creates a child process, creating an another instance of the parent process. It returns 0 to the child and PID of the child to the parent.

In this case, when i = fork() is executed, The parent gets i assigned as the PID of the child process, which is most likely greater than 1. The for loop in the parent will run not run even once as i < 2 will fail. At this point of time there are two processes P and C1 (Child)

After the fork is executed by parent, child gets a 0 as return value, i = 0. This means the condition i < 2 is successful. Child executes the fork() in the loop body, creating C2. Value of i in both C1 and C2 are 0. i gets incremented to 1.

C1 and C2 execute i < 2, This condition is successful. Fork is executed by both. C3 is spawned off by C1 and C4 by C2.

i's value gets incremented to 2. i < 2 fails. All of them get out of the loop

To summarise, there are 4 child processes created in this program. You can try this with the following program where you will see 5 PIDs getting printed.

    #include <stdio.h>
    main()
    {
       int i = 0;
       for (i = fork(); i < 2; i++)
          fork();
       printf("Hello World i %d\n", getpid());
    }
Ravi S
  • 139
  • 3