Estoy tratando de aprender programación UNIX y encontré una pregunta con respecto a fork (). Entiendo que fork () crea un proceso idéntico al proceso actualmente en ejecución, pero ¿dónde comienza? Por ejemplo, si tengo código
int main (int argc, char **argv)
{
int retval;
printf ("This is most definitely the parent process\n");
fflush (stdout);
retval = fork ();
printf ("Which process printed this?\n");
return (EXIT_SUCCESS);
}
El resultado es:
Este es definitivamente el proceso principal
¿Qué proceso imprimió esto?
¿Qué proceso imprimió esto?
Pensé que eso fork()
crea un mismo proceso, así que inicialmente que en ese programa, la fork()
llamada se llamaría recursivamente para siempre. ¿Supongo que el nuevo proceso creado desde fork()
comienza después de la fork()
llamada?
Si agrego el siguiente código, para diferenciar entre un proceso primario y secundario,
if (child_pid = fork ()) printf ("This is the parent, child pid is %d\n", child_pid);
else printf ("This is the child, pid is %d\n",getpid ());
después de la llamada fork (), ¿dónde comienza su ejecución el proceso hijo?
man fork
es suficiente para responder a su pregunta, por cierto