SoloCodigo

Sistemas Operativos => GNU/Linux => Mensaje iniciado por: danielin en Martes 10 de Septiembre de 2002, 03:16

Título: Re: utilizacion de fork() en unix
Publicado por: danielin en Martes 10 de Septiembre de 2002, 03:16
crear un padre que inicie una matriz y que 2 hijos lean la matriz y le entruen el resultado al padre
Título: utilizacion de fork() en unix
Publicado por: bench en Jueves 19 de Septiembre de 2002, 14:34
La Primitiva fork(). Retorna un Cero al Proceso Hijo y el Pid del hijo al proceso padre. Creando una Copia de los Datos con los Valores que tengan al momento de lanzar el proceso hijo, a partir de ese momento las variables son independientes  y si se modifican en un proceso, no afecta su valor en los otros.
Para comunicar los procesos se puede Utilizar pipes, memoria compartida SHM, archivos de disco y otros.

Esquema:

...
int Mi_Pipe[];
int Fid[3];
....
Fid[0] = getpid(); /* Pid del Padre */
pipe(Mi_Pipe);
/******************************
Se creo el Cauce de comunicación
Mi_Pipe[0] => Descriptor de Acceso an Lectura.
Mi_Pipe[1] => Decriptor de Acceso en Escritura.
*****************************/
....

if(!(Pid[1] = fork()))
  {
   /***
   Codigo del Proceso Hijo 1.
   ***************/
   return; /* Finalizar el Proceso */
   }
/***
Proceso Padre Tiene en Pid[1]
El pid del Primer Porceso Hijo
***********************/
if(!(Pid[2] = fork()))
  {
   /***
   Codigo del Proceso Hijo 2.
   ***************/
   return; /* Finalizar el Proceso */
   }
/***
Proceso Padre Tiene en Pid[2]
El pid del Primer Proceso Hijo
***********************/
/*******
Codigo del Padre
*************/
Para Sincronizar los Procesos se Pueden
Utilizar la Primitiva signal, kill

Espero te Sirva la Información