6.2.05

Familia numerosa.

El siguiente código crea tres procesos hijos y, cada proceso hijo, crea tres nuevos procesos nietos.
Este código se puede simplificar mucho utilizando exit(int).


#include "unistd.h"
#include "sys/types.h"

int main()
{
int i, padre, prim_padre;

prim_padre = padre = 1;

for(i=0; i<3; i++) {
if (padre == 1) {
if (fork() == 0) {
// Proceso hijo
if (fork()==0) {
// Proceso nieto
printf("Nieto %i con padre %ld\n", getpid(), getppid());
} else {
printf("Hijo %i con padre %ld\n", getpid(), (long)getppid() );
}
padre = 0;
} else {
sleep(2);
if (prim_padre) {
printf("Padre %i\n", getpid());
prim_padre = 0;
}
}
}
}
return 0;
}


No comments: