viernes, 18 de octubre de 2013

Fork, como un tenedor

El fork es una de las herramientas que nos brinda linux para manejar varios procesos, es tremendamente simple la sintaxis: 

pid_t fork(void);

Lo dificil no es entender como funciona si no que hace, segun el manual de linux: 
    
    - crea un nuevo proceso duplicando el proceso original
    - el proceso hijo tiene su propio pid
    - el ppid() del proceso hijo es el pid del proceso original
    - el hijo no tiene señales pendientes
    - el hijo no hereda el valor de los semaforos

Valor de retorno:
    En el padre: pid del hijo
    en el hijo: 0


Y nada mejor que un ejemplo:

#include ...

int main(){

 int hijo;


printf("soy un solo proceso ! \n");
sleep(1);

hijo=fork();//hacemos un proceso hijo

printf("somos dos procesos!\n");
sleep(1);


if (hijo==0){//vemos si es el hijo

printf("soy el hijo!\n");
sleep(1);
printf("sigo vivo");
}
else{//si no es el padre

printf("soy el padre\n");

}

printf("ya morí ... :S \n");//ambos ejecutan esto

return 0;};
  


espero que sirva para aclarar algo, den +1.


1 comentario: