Programa del PID

PROGRAMA DEL PID



#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.


1 comentario: