#include <sys/type.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
int main(int arge, char *argr[]) {
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 de PID %d \n", wait(null));
return 0;
}
¿POR QUE APARECEN MENSAJES REPTIDOS?
---Por que los mensajes que mandan son representaciones que se da por numeros aleatorios dados por el randow
¿QUE OBSERVAS?
---La sucesion de llamadas a PID donde esos mismos hacen una llamada a otro PID (el PId Padre)
¿POR QUE?
---Cuando llamamos a fork(), en algún lugar
dentro de la función, se duplican los procesos y empiezan a correr
por separado. Cuando llega el momento de retornar de dicha función
(y ya tenemos dos procesos), al proceso original le devuelve un identificador
del proceso recien creado (el mismo numerito que vemos con el comando ps
de una shell). Al proceso recien creado le devuelve 0
Función srandom()
Inicializa el generador de números aleatorios.Sintaxis: void srandom(unsigned semilla);
La función srandom sirve para cambiar el origen del generador de números aleatorios.
Valor de retorno:srandom no devuelve ningún valor.
REVISADO
ResponderEliminar