ragazzi non ho capito il perchè del comportamento.....quando eseguo la prima fork pid =0 ma quindi le istruzioni di if(!pid) sono eseguite mentre come regola quelle dell'else non dovrebbero essere eseguite invece le esegue a perchè?

#include <sys/types.h>
#include <stdio.h>
#include <sys/wait.h>
#include <stdlib.h>
main()
{
pid_t pid;
int status;

/* genera primo figlio*/

pid=fork(); /*esattamete qui */


if (!pid)
{

printf("Sono il primo filgio:PID=%d PPID=%d\n",getpid(),getppid());
exit(0);

}
else
{

pid=fork();

if (!pid)
{
printf("Sono il secondo filgio:PID=%d PPID=%d\n",getpid(),getppid());
exit(0);
}
else
{
pid=wait(&status);
printf("primo figlio terminato:PID=%d Stato=%d\n",pid,status);

pid=wait(&status);
printf("secondo figlio terminato:PID=%d Stato=%d\n",pid,status);
printf("programma terminato");


}



getchar();

}
}