fork() in C program

This is a question from recent GATE entrance exam.
A process executes the code


The total number of child processes created is

(A) 3. (B) 4. (C) 7. (D) 8.

My answer was (A) 3.

My view is that after each fork(), 1 child process will be created and execution of parent will continue normally.

Unreliable answer (without any explanation) from coaching institutes were (C) 7.

I think they are treating that each fork will create a child process and a new parent process. And they are counting all the parent process as well. [I am not allowed to post image but my friend explained in a diagram, a tree with each left node forking down in two nodes. Therefore 4 parent node in left and 3 child node in right.] But the Question clearly mentions child process only. And also I don't think that parent process is newly created in forking.

Can someone explain some forking fundamentals, and a proper solution to above question please.

P.S. If programming language make any difference in concept of forking, then as per syllabus, this should be either C or C++ program.


fork() results in both the original process and one child to start from that point in the code. Therefore you have this picture:

enter image description here