//Librería sys/types que contiene funciones de busqueda y ordenamiento de directorios y manipulacion de archivos
#include<sys/types.h>
//Librería que define las constantes simbolicas para el uso del wait
#include<sys/wait.h>
//Librería unistd.h que contiene funciones para el manejo de directorios y archivos, define getpid y getppid
#include<unistd.h>
//Librería que contiene funciones de entrada y salida
#include<stdio.h>
int main (int argc, char * argv[])
{
int num;
//El PID (process ID ó identificador de proceso) es un identificador de procesos es un numero entero usado por el kernel de algunos sistemas operativos
//como Unix o Windows NT, para identificar un proceso de forma unívoca
pid_t pid;
for(num=0; num < 3; num++)
{
//El proceso fork crea nuevos procesos(proceso hijo), que es exactamente igual al(proceso padre), el cual va incrementando con cada nuevo proceso creado por fork()
pid = fork();
printf("Soy el proceso pid %d y mi padre tiene %d de proceso pid \n",
getpid(), getppid());
//getppid, devuelve el identificador de proceso del padre del proceso actual
if (pid != 0)
{
break;
//getpid devuelve el identificador del proceso actual
//srandom genera un numero aleatorio
srandom(getpid());
//sleep retarda el random
sleep (random() %3);
}
}
if (pid != 0)
{
printf("Fin del proceso pid %d \n", wait (NULL));
return 0;
}
}
PREGUNTAS
1. Por que aparecen mensajes repetidos
Debido a que se encuentra la instrucción for, ya que esta realiza un proceso iterativo de acuerdo a las condiciones ya establecidas
2. Que observas
Se observan los identificadores de procesos, los cuales se les va asignando a cada uno de los procesos de ejecución que se estén realizando en ese momento
Se observan los identificadores de procesos, los cuales se les va asignando a cada uno de los procesos de ejecución que se estén realizando en ese momento
3. Por que
Se tienen que asignar identificadores a todos los procesos que se realicen para poder llevar un control dentro del kernel, y asi al querer terminar un proceso solo colocamos en consola:
sudo kill #numdePID
y el proceso se termina

REVISADO
ResponderEliminar