Estou tentando aprender programação UNIX e me deparei com uma pergunta sobre fork (). Entendo que o fork () cria um processo idêntico ao processo em execução no momento, mas por onde começa? Por exemplo, se eu tiver 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);
}
A saída é:
Definitivamente, esse é o processo pai.
Qual processo foi impresso?
Qual processo imprimiu isso?
Eu pensei que isso fork()
cria um mesmo processo, então eu inicialmente que naquele programa, a fork()
chamada seria recursivamente chamada para sempre. Eu acho que esse novo processo criado a partir do fork()
início após a fork()
chamada?
Se eu adicionar o código a seguir, para diferenciar um processo pai e filho,
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 ());
após a chamada fork (), onde o processo filho inicia sua execução?
man fork
é certo o suficiente para responder à sua pergunta, btw