Beruflich Dokumente
Kultur Dokumente
Procesos e Hilos
1.1. Procesos
1. Observa el siguiente cdigo y escribe la jerarqua de procesos resultante.
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char argv[ ]) {
int num;
pid t pid;
return 0;
}
Ahora compila y ejecuta el cdigo para comprobarlo. Contesta a las siguientes
preguntas:
Por qu aparecen mensajes repetidos?
Presta atencin al orden de terminacin de los procesos,
Qu observas?
Por qu?
int num;
pid _t pid;
srandom(getpid());
for (num= 0; num< 3; num++) {
pid= fork();
printf ("Soy el proceso de PID %d y mi padre tiene%d de PID.\n",
getpid(), getppid());
if (pid== 0)
break;
}
if (pid== 0)
sleep(random() %5);
else
for (num= 0; num< 3; num++)
printf ("Fin del proceso de PID %d.\n", wait (NULL));
return 0;
}
Ahora compila y ejecuta el cdigo para comprobarlo. Presta atencin al orden
de terminacin de los procesos, qu observas? Por qu?
#define L1 2
#define L2 3
int i;
int prof, anch;
if (argc!= 3) exit(0);
/ completar aqu /
printf("Soy el proceso %d y mi padre es%d\n", getpid(), getppid());
sleep (2);
return 0;
}
Modifica el programa anterior para que la expansin en anchura del rbol se
produzca slo en aquellos niveles de profundidad par (y distinta de cero). En la
figura 1.2 se muestra un ejemplo.
9. Escribe el fragmento de cdigo que genera la jerarqua de procesos que se
muestra en la figura 1.3 para profundidad n.
if (fork()!= 0) {
wait (NULL);
fin= time (NULL);
printf ("Tiempo empleado: %ld\n", fin-inicio);
}
else {
inicio= time (NULL);
execlp ("prueba.exe", "prueba.exe", NULL);
}