Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - donself

#1
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