martes, 20 de septiembre de 2011

PROGRAMA

Las llamadas al sistema fork características:
fork: En el momento de la llamada a fork el proceso hijo:
• es una copia exacta del padre excepto el PID.
• tiene las mismas variables y ficheros abiertos.
• las variables son independientes (padre e hijo tienen distintas
memorias).
• los ficheros son compartidos (heredan el descriptor).
clone: permite especificar qué queremos que compartan padre e hijo.
• espacio de direccionamiento
• información de control del sistema de archivos (file system)
• descriptores de archivos abiertos. 
• gestores de señales o PID.

El getpid () la función devolverá el ID del proceso del proceso invocador.


#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;
}

PREGUNTAS

¿POR QUE APARECEN MENSAJES REPETIDOS?

Por que el srandom  cambia el origen del generador de números aleatorios.
Valor de retorno:srandom no devuelve ningún valor.

¿QUE OBSERVAS?
Que se va incrementando con cada nuevo proceso creado con una llamada fork().
¿POR QUE?
Alcanza un cierto valor límite se empieza otra vez desde 0, buscando números que no estén asignados ya a otro proceso en ejecución.


1 comentario: