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

int  main()  {  
	int  pid1, pid2, childStatus,terminatedChild;
	pid1 = fork();
	switch ( pid1 )  {
		case 0 : // fils 1
			printf("Fils 1  %d\n",getpid());
			exit(14);
		case -1 : // erreur du fork
			printf("Erreur du premier fork\n");
			exit(1);
		default : // le pere
			pid2 = fork();
			switch ( pid2 ) {
				case 0 : // fils 2
					printf("Fils 2  %d\n",getpid());
					exit(24);
				case -1 : // erreur du fork
					printf("Erreur du premier fork\n");
					exit(1);
				default : // Le pere doit attendre la mort de ses deux fils.
					
					terminatedChild=wait(&childStatus);
					if ( WIFEXITED(childStatus))
						printf("w:%d  s:%d\n", terminatedChild, WEXITSTATUS(childStatus));

					terminatedChild=wait(&childStatus);
					if ( WIFEXITED(childStatus))
						printf("w:%d  s:%d\n", terminatedChild, WEXITSTATUS(childStatus));
			}
	}
}
