Está en la página 1de 1

Bloque II – Administración de procesos

PREGUNTAS
1. ¿Cuántos
#include <stdio.h>procesos se crean durante la ejecución del programa anterior? Nómbralos en
#include <stdlib.h>
el código
#include y dibuja la relación jerárquica se establece entre ellos.
<sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
int pid1, pid2, pid3, pidF, fin1=0, fin2=0, fin3=0, estado;
if ( ( pid1=fork() ) != 0 )
if ( ( pid2=fork() ) != 0 )
if ( ( pid3=fork() ) != 0 )
do {
pidF = wait( &estado );
if ( pidF == pid1 ) fin1 = 1;
else if ( pidF == pid2 ) fin2 = 1;
else if ( pidF == pid3 ) fin3 = 1;
} while ( !fin1 || !fin2 || !fin3 );
else printf( ”\n Who am I? \n” );
else if ( ( pid1=fork() ) != 0 )
while( 1 );
else printf( ”\n Who am I? \n” );
else
if ( ( pid1=fork() ) != 0 )
while ( wait(&estado) != pid1 );
else while( 1 );
exit( 0 );
}

2. ¿Cuántas variables pid1 se crean y cuáles de ellas valen cero?

3. Explica brevemente en qué estado queda CADA proceso en tiempo de ejecución.

EJERCICIO
Escribir un programa que reciba como argumento un número y valide que sólo se recibe
un único argumento mayor que 0 (en caso de que no sea así, sacará un mensaje de error y
acabará el programa). El argumento se pasará a una variable local en el proceso padre,
que lo sacará por pantalla y que posteriormente creará dos procesos hijo (heredan dicha
variable) a los que se quedará esperando. Cada proceso hijo modificará su copia de la
variable con un número aleatorio entre 0 y el valor inicial heredado. El Hijo 1 sumándole
el número aleatorio y el Hijo 2 restándoselo. Ambos procesos hijo sacarán por pantalla
quién es (Hijo#), su PID y el nuevo valor de la variable.
NOTA: En ALUD hay un documento sobre la generación de números aleatorios

También podría gustarte