(progr. en C) Procesos concurrentes con Fork()- Ayuda!

Hola!, llevo ya varios días intentando crear mediante el uso de fork() la siguiente estructura y no hay manera (los números dentro de cada proceso es un ejemplo del orden que deben seguir los PID):

Imagen

Alguien me echa una mano?

*aclaración: Más que creados de forma concurrente, la idea es que se ejecuten de forma concurrente.

*aclaración2 (para el que no lo sepa): fork() se utiliza para la creación de nuevos procesos en linux.

gracias!
Yo hace 2 años que no veo esto, supongo que sabes lo rayante que es con que imaginate de lo qeu te acuerdas después de tanto tiempo sin verlo XD. Te intento orientar de todos modos.

Suponte este fragmento de código:
//Antes del fork
fork();
//Después del fork

La parte detrás del fork es ejecutada tanto por el padre como por el hijo, "a la vez", de forma que si se tiene esto:
//Antes del fork
fork();

fork();
//Después del fork

El proceso padre crea un hijo, luego crea otro hijo y el el primer hijo crea otro hijo. ¿Que tienes que hacer para qeu el padre sea el único que crea los hijo?: Asegurarte que es el padre quien ejecuta el codigo (como quieras que mires su PID, no me acuerdo).
//Antes del fork
int P =

fork();

if( )
. fork();

//Después del fork

De manera que ahora el padre crea 2 hijos (y los hijos ninguno).

Para el proceso padre cree N hijos, basta con seguir la misma filosofía, con un bucle:
//Antes del fork
int P =

fork();

for(i = 0; i. if( )
. fork();

Espero que te sirva :).
JAPosti escribió:
Espero que te sirva :).


Gracias! me ha quedado mucho más claro (me pregunto como no se me habia ocurrido lo del if...) :)


[beer]
2 respuestas