Dlaczego podczas drukowania wywołań wideł drukowanych jest wiele identyfikatorów PID?

Uczę się zarządzania procesami w Linuksie i próbowałem zaimplementować następujący program C, którego wynik wydrukował 15 PID (4 unikalne PID). Próbowałem znaleźć drzewo genealogiczne procesu, ale naprawdę nie pomogło mi zrozumieć, dlaczego PID były drukowane tyle razy. Przeszedłem przez kilka linków, w tymhttp://u.cs.biu.ac.il/~linraz/os/OS2.pdf, http://www.ibm.com/developerworks/aix/library/au-unixprocess.html , Kto wykonuje pierwszy po fork (): rodzic lub dziecko? . Ale nie mogłem znaleźć rozwiązania. Byłoby bardzo pomocne, gdyby ktoś pomógł mi zrozumieć ten problem.

    #include <stdio.h>
    #include <unistd.h>
    #include <sys/types.h>

    int main()
    {
           printf ( "Parent:%d Child: %d\n",getppid(),getpid()); // To print the PIDs of the parent process and the child process
           fork();               //System call to spawn a child process
           printf ( "Parent:%d Child: %d\n",getppid(),getpid()); 
           fork();
           printf ( "Parent:%d Child: %d\n",getppid(),getpid());
           fork();
           printf ( "Parent:%d Child: %d\n",getppid(),getpid());
           return 0;
    }

questionAnswers(4)

yourAnswerToTheQuestion