Prova a far girare questo e vedi se arrivi alle mie stesse conclusioni:
codice:
#include <stdio.h> 
#include <unistd.h> 
#include <sys/wait.h>
int main() 
{ 
      int i, count=0;
      pid_t pid;
      printf ("Padre %d: 1\n",getpid());
      fflush(stdout);
      if(fork()==0) 
       { 		
              printf ("Figlio1 %d: 2\n",getpid()); 
	      fflush(stdout);
              if((pid=fork())!=0)
	      {
		for(i=0;i<4E8;i++)
		  count+=i*i;
	      }
		
              printf ("Sono %d: 3\n",getpid()); 
	      fflush(stdout);
	      
	      if(pid==0)
	      {
		for(i=0;i<4E8;i++)
		  count+=i*i;
	      }
        }
        else
	  wait(NULL); 
	
        printf ("Sono %d: 4\n",getpid()); 
	fflush(stdout);
	
	return 0;
}