Procesos en C

Buenas a todos. Aquí uno que no termina de aprender nunca a programar y ya se dedica mas al mundo del hardware que otra cosa. Me podríais ayudar con este ejercicio??? Necesito tenerlo terminado para poder mandar un trabajo y me seria de muchísima ayuda de verdad.

Muchisimas gracias.

Realizar en lenguaje C un programa que cree dos proceso hijo (“hermanos”). A continuación, mientras el padre espera, los dos hijos echarán una “carrera”: aquel proceso hijo que termine su ejecución antes será el ganador, y se anunciará por pantalla, indicando el pid; a continuación se anunciará el perdedor de la carrera, indicando también su pid. Ejemplo de posible ejecución:
GANADOR: El segundo hijo. PID: 1798.
PERDEDOR: El primer hijo. PID: 1797.


#include <sys/types.h>

#include <unistd.h>

#include <stdio.h>



int main(int argc, char *argv[])

{

pid_t pid1, pid2;

int status1, status2;



if ( (pid1=fork()) == 0 )

{ /* hijo */

printf("Hijo 1 (%d, hijo de %d)\n", getpid(), getppid());

}

else

{ /* padre */

if ( (pid2=fork()) == 0 )

{ /* segundo hijo */

printf("Hijo 2 (%d, hijo de %d)\n", getpid(), getppid());

}

else

{ /* padre */

/* Esperamos al primer hijo */

waitpid(pid1, &status1, 0);

/* Esperamos al segundo hijo */

waitpid(pid2, &status2, 0);

printf("Padre (%d, hijo de %d)\n", getpid(), getppid());

}

}



return 0;

}
si metes codigo, usa la etiqueta code, que es mas comodo para leer.

Respecto al programa lo tienes practicamente hecho.. solo hay que cambiar una cosilla...mirate como funcionan las funciones wait y waitpid, y sabrás resolver el problema http://linux.die.net/man/3/wait
1 respuesta