lunes, 19 de septiembre de 2011

Practica 1

#include<sys/types.h>
#include<sys/wait.h>
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>



int main()
{
    int num;
    pid_t pid;
    system("clear");

    for(num=0; num<3; num++)
    {
        pid=fork();
        printf("soy el progreso 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 se repite tantas veces?
 Por dos funciones: fork- por la cual aparecen repetidos y la funcion srandom para los numeros aleatorios

¿Que puedes observar? 
En el proceso se observa que el proceso es mayor que el padre
ejemplo
soy el proceso PID 3052  y mi PADRE 3051




FUNCIONES

Que es:

Fork:
  
La forma en que un proceso arranca a otro es mediante una llamada al sistema fork o clone.

1. La función fork de la librería libc coloca los parámetros de la llamada
en los registros del procesador y se ejecuta la instrucción INT 0x80.

2. Se conmuta a modo núcleo y, mediante las tablas IDT y GDT, se llama
a la función sys_call.

3. La función sys_call busca en la sys_call_table la dirección de la
llamada al sistema sys_fork

SRANDOM

Funcion en c estadar llamada random(). Si quieres generar un numero aleatorio deberas utilizar srand() y rand(). Para hacer uso de ellas debes incluir stdlib.h

delay () o sleep () 
 <windows.h> Sleep() // retraso en milisegundos

<dos.h> sleep() // retraso en segundos.


 Turbo C + + no es una función llamada delay (), y en el compilador de Microsoft, supongo que es el sueño o sleep. lo que podría ser la posible función equivalente a la que se puede utilizar cuando se compila en GCC.

  Wait.
Obligará a un proceso padre que esperar a que un proceso hijo para detener o poner fin a wait () devuelve el pid del hijo o -1 para un error.. El estado de salida del niño es devuelto.
LIBRERIAS
 

#include <dos.h>
//esta es la librería para usar sleep

La cabecera <sys/types.h> incluye definiciones para al menos los siguientes tipos:
id_t
Se utiliza como identificador general, se puede utilizar para contener al menos un pid_t, uid_t o gid_t una.
ino_t
Utilizados para el archivo de números de serie.
key_t
Se utiliza para la comunicación.
mode_t
Se utiliza para algunos de los atributos de archivo.
nlink_t
Se utiliza para el conteo de enlaces.
off_t
Se utiliza para tamaños de archivo.
pid_t
Se utiliza para los identificadores de proceso y los ID de proceso del grupo.
La cabecera <sys/wait.h> define las siguientes constantes simbólicas para su uso con waitpid () :

El tipo idtype_t se define como un tipo de enumeración cuyos valores posibles son al menos lo siguiente:

1 comentario: