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;
}