es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , ,

Answer

  1. Avatar for 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 sistema fork(), 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 usando printf(). La función fork() 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 de fork() 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 de fork().

Comments are closed.