#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.
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.
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.
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:
REVISADO
ResponderEliminar