lunes, 19 de septiembre de 2011

PROGRAMA EN C

#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;
for(num=0;num<3;num++){
pid=fork();
printf("Soy el proceso PID %d, y mi padre tiene %d, de PID \n",getpid(),getppid());
if(pid!=0)
break;
srandom(getpid());
sleep(random() %3);
}
if(pid!=0)
printf("fin del proceso PID %d \n", wait(NULL));
return 0;
}


¿Por que aparecen los mensajes repetidos?

Con fork() es el encargado de crear un nuevo porceso ,se  crea  una cadena de procesos de N, donde N es el parámetro de línea de comandos. Cada proceso crea un proceso hijo, imprime su propio PID y el PID de su padre,la funcion wait()  espera a su hijo a terminar llamando a la espera () función. 

El sramdon interviene inicializando  el generador de números aleatorios mediante el establecimiento de los valores de la tabla de estado sobre la base de la semilla.

Con el   getpid devuelve el identificador de proceso del proceso actual. (Esto es usado normalmente por rutinas que generan nombres únicos de ficheros temporales.) getppid devuelve el identificador de proceso del padre del proceso actual.


¿Que observas?

A la hora de ejecutar el programa desde la consola pude observar  como se crea un proceso padre y un proceso hijo uno cada diferente por cada padre e hijo y al final muestra el fin de los procesos creados.

¿Por que?

Esto se debe a la utilizacion de un ciclo, la funcion fork() y wait() que son parte importante durante la ejecucion de nuestro programa, la funcion getpid que nos muestra el identificador del proceso y el getppid el identificador del proceso padre.

1 comentario: