ejecutivo sin tenedor
Hay al menos dos razones por las que querrías hacer algo así:
- Cadena de carga. La imagen del proceso actual se reemplaza con algo diferente.
- Reiniciar el programa que se está ejecutando actualmente (por ejemplo, puede ocurrir cuando SIGHUP o un proceso de servidor de este tipo, vuelve a cargar todo y comienza de nuevo). De alguna manera, uno podría argumentar que esto es carga en cadena, solo coincidentemente con el mismo programa.
tenedor sin ejecutivo
Eso es lo que hace cada demonio cada vez que se inicia (dos veces, de hecho). Esto hace varias cosas, entre ellas el shell no se cuelga (ya que el proceso original en el que el shell espera termina) y el demonio ya no está controlado por el terminal, por lo que cerrar la ventana del shell no mata al demonio.
Otro uso común es bifurcar a los niños trabajadores, que se hizo famoso por el servidor web Apache hace unos 25 años (hoy en día esto ya no se considera de vanguardia debido a que es muy propenso al problema del rebaño atronador, pero ciertamente proporciona el El servidor más simple y robusto posible).
Sin embargo, otro uso común es crear una instantánea consistente. fork
no solo crea un proceso, también copia (en teoría, en realidad solo marca páginas copiadas en escritura) el espacio de direcciones. Esto (atómicamente) crea una instantánea de los datos completos del programa que el padre ya no puede modificar.
Algunos programas se aprovechan de eso. Por ejemplo, redis guarda datos en el disco (en un estado coherente) y al mismo tiempo modifica el conjunto de datos simultáneamente. Esto solo funciona porque fork
creó una instantánea consistente que no ve las modificaciones realizadas por el proceso padre.