fork() in C program


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

fork();  
fork();  
fork();  

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.


Answers:


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