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:
Código:
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