¿Cómo funciona exactamente fork()?fork() proceso de ejecución
El código
#include <stdio.h>
int main (int argc, char const *argv[])
{
printf("Hi\n");
int i;
for(i = 1; i < argc; i++)
{
printf("Argument %d is %s\n", i, argv[i]);
fork();
printf("Forked in for loop increment %d\n", i);
}
return 0;
}
siguiente da la siguiente salida
/a.out hola mundo
Argumento 1 es hola
ahorquillada por incremento bucle 1
Argumento 2 es mundo
ahorquillada por incremento bucle 2
ahorquillada por incremento bucle 1
Argumento 2 es mundo
ahorquillada por incremento bucle 2
bifurcada en bucle for incremento 2
¿Qué código ejecuta fork primero, en gener Alabama. Me gustaría conocer los principios de fork() en lugar de solo este ejemplo. Pude haber tenido múltiples argumentos en la línea de comando.
Así que mis salidas de la impresión que me son engañosas. Una bifurcación() en un bucle for es extraño ¿verdad? – jarryd
El orden de salida en su programa no es determinista. Un 'fork' en un bucle no es tan extraño (es posible que desee crear un * n * número de procesos de trabajo), pero un' 'bifurcación' 'desnudo donde el hijo y el padre ejecutan el mismo código es bastante raro. La mayoría de las veces, un 'tenedor' es solo una preparación para una llamada a' exec'. –
@ Helium3 Lo que es raro es el código que no almacena el valor de retorno de fork en una variable llamada algo así como childpid y luego hace cosas diferentes dependiendo de si es 0 (en el niño), positivo (en el padre), o negativo (falla). Esto puede suceder en un ciclo o no. –