Duda para programar Arbol de Procesos en C - OS Linux

Iniciado por donself, 20 Mayo 2016, 18:49 PM

0 Miembros y 1 Visitante están viendo este tema.

donself

Hola amigos.

Estoy realizando un proyecto sobre procesos en Unix, usando el lenguaje C.
EL proyecto consiste en representar un arbol de procesos usando las funciones fork(), wait(), exit().

La salida de mi programa me debe quedar:

1. Father:Pid1 - Hello
2. Children1:Pid2 - Hello
3. GrandChildren1.1:Pid3 – Hello and Goodbye
3. GrandChildren1.2:Pid4 – Hello and Goodbye
4. Children1:Pid2 - Goodbye
6. Children2:Pid6 - Hello
7. GrandChildren2.1:Pid7 – Hello and Goodbye
8. Children2:Pid6 - Goodbye
9.  Father:Pid1 - Goodbye

este es el arbol:

https://www.solidfiles.com/v/n5QWvzwKdvw5M

Esta salida la entiendo.
He programado el siguiente codigo para los inicios de los procesos, pero no se como hacer que terminen los procesos, siempre se me riegan:

main() {

   if(fork())
   {
       // 1
       printf("1. Father:Pid1 - Hello\n");
       if(fork())
       {
           // 2
           printf("2. Children1:Pid2 - Hello\n");
           if(fork())
           {
               // 4
               printf("3. GrandChildren1.1:Pid3 - Hello and GoodBye\n");
           }
           else{}

           wait(1);

           if (fork())
           {
                printf("3. GrandChildren1.2:Pid4 - Hello and GoodBye\n");
           }
           else {}
       }
       else
       {
           printf("4. Children1:Pid2 - GoodBye\n");
       }
   }
   else{
       if(fork())
       {
           // 3}
           printf("6. Children2:Pid6 - Hello\n");
           if (fork())
           {
               printf("6. GrandChildren2.1:Pid7 - Hello and GoodBye\n");
           }
           else{}
   }
   else{}
   }

   pause();
   return 0;
}


Por ejemplo, no se como terminar el Pid2 y veo que cuando imprima los 2 nietos, debo hacerlo.

Como podria hacerlo o que debo entender?

saludos  gracias
Donny