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


int main()
{

  int uno, dos, tres;  /* identificadores procesos hijos */
  int retval, tmp;     /* valor regreso de la llamada y tiempo a dormir */
  int *status;         /* status del proceso hijo */


  if ( (uno = fork()) == 0) {
     tmp = (random() % 10);
     printf("Proceso uno (%d) a dormir %d segs. \n",getpid(),tmp);
     sleep(tmp);
     printf("Proceso uno termino \n");
  }
  else
    if ( (dos = fork()) == 0) {
       tmp =10; /*(random() % 10);*/
       printf("Proceso dos (%d) a dormir %d segs. \n",getpid(),tmp);
       sleep(tmp);
       printf("Proceso dos termino\n");
    }
    else
       if ( (tres = fork()) == 0) {
         tmp = (random() % 10);
         printf("Proceso tres (%d) a dormir %d segs. \n",getpid(),tmp);
         sleep(tmp);
         printf("Proceso tres termino\n");
       }
       else {
         printf("\t\tPADRE ESTA: Esperando que el proceso dos termine\n");
         retval = waitpid(dos,&status,0);
         printf("\t\tProceso dos (%d) termino con estatus: %d \n",retval,status);
       }
	   return 0;
}
