How the fork() system call works: It is used to create child process. It takes no argument and returns a process ID. Both parent and child will execute the instruction next to fork(). To differentiate between parent and child process we have to examine the value of process id returned by fork().
- fork() returns negative value if it is unable to create a child process.
- fork() returns 0 to the child process.
- fork() returns positive int indicating pid of child process to parent process.
/* code...*/
pid_t pid;
fork(); // create a process
pid = getpid();
if(pid == -1) { // failed to create child process }
else if(pid == 0) { // code for child process }
else { // code for parent process }.
Now let's come to the question.
fork(); // child_1 will be created
fork(); // child_2 and child_11 will be created.
fork(); // child_3 , child_12, child_21, child_112 will be created
So total number of child process created is 7