• Lunes 29 de Abril de 2024, 05:59

Autor Tema:  Re: utilizacion de fork() en unix  (Leído 1876 veces)

danielin

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: utilizacion de fork() en unix
« en: Martes 10 de Septiembre de 2002, 03:16 »
0
crear un padre que inicie una matriz y que 2 hijos lean la matriz y le entruen el resultado al padre

bench

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
utilizacion de fork() en unix
« Respuesta #1 en: Jueves 19 de Septiembre de 2002, 14:34 »
0
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