Bifurcación (sistema operativo)
De Wikipedia, la enciclopedia libre
- Este artículo se refiere a la bifurcación de procesos en sistemas operativos, consulta Bifurcación (informática) para otros usos.
Una bifurcación o fork, cuando se aplica en el contexto de un lenguaje de programación o un sistema operativo, hace referencia a la creación de una copia de sí mismo por parte de un programa, que entonces actúa como un "proceso hijo" del proceso originario, ahora llamado "padre". Los procesos resultantes son idénticos, salvo que tienen distinto número de proceso (PID) y la llamada devuelve el PID del proceso hijo al padre y un 0 al hijo.
Más generalmente, una bifurcación en un entorno multihilo significa que un hilo de ejecución se bifurca.
[editar] Ejemplo
Aquí hay un ejemplo escrito en lenguaje de programación C que ilustra la idea de la bifurcación. El código en las secciones proceso hijo y proceso padre se ejecuta simultáneamente.
int pid; pid = fork(); if(pid == 0) { /* Proceso hijo: * Cuando fork() devuelve 0, estamos en * el proceso hijo. * Aquí contamos hasta diez, uno cada segundo. */ int j; for(j=0; j < 10; j++) { printf("hijo: %d\n", j); sleep(1); } _exit(0); /* Tener en cuenta que no usamos exit() */ } else if(pid > 0) { /* Proceso padre: * Sino estamos en el proceso padre. * De nuevo contamos hasta diez. */ int i; for(i=0; i < 10; i++) { printf("padre: %d\n", i); sleep(1); } } else { /* Error handling. */ fprintf(stderr, "no se ha podido bifurcar"); exit(1); }
Este código imprimirá:
padre: 0 hijo: 0 hijo: 1 padre: 1 padre: 2 hijo: 2 hijo: 3 padre: 3 padre: 4 hijo: 4 hijo: 5 padre: 5 padre: 6 hijo: 6 hijo: 7 padre: 7 padre: 8 hijo: 8 hijo: 9 padre: 9
El orden de la salida será determinada por el kernel.