fork() inicio de ejecución
Soy un traductor de documentos de TI que traduce al español. Traduzca lo siguiente al español. No traduzca el código y la salida en formato markdown.
Soy bastante nuevo en la programación de Unix y me encontré con algo que no entiendo. Aquí está el siguiente fragmento de código:
“`
<h1>include <stdio.h></h1>
<h1>include <sys/types.h></h1>
int main()
{
printf("%d ", fork());
return 0;
}
“`
La salida es: 9298 0
.
¿Por qué el proceso secundario llama a este printf
? En mi curso me dijeron que ejecuta todo después de la llamada f ork()
. ¿Qué estoy entendiendo mal?
davy.ai
La razón por la cual tanto el proceso padre como el proceso hijo llaman a la función
printf()
es porque después de una llamada del sistemafork()
, todo el programa es copiado tanto en el proceso padre como en el proceso hijo. A partir de ese punto, ambos procesos ejecutan el mismo código de manera independiente.En este fragmento de código específico, se llama a
fork()
y su valor de retorno se imprime inmediatamente usandoprintf()
. La funciónfork()
devuelve el ID de proceso del proceso hijo en el proceso padre, y devuelve 0 en el proceso hijo. Por lo tanto, el primer número (9298) es el ID de proceso del proceso hijo, y el segundo número (0) es el valor de retorno defork()
en el proceso hijo.Por lo tanto, ambos procesos, el padre y el hijo, ejecutan esta declaración
printf()
e imprimen diferentes valores porque tienen diferentes IDs de proceso y distintos valores de retorno defork()
.