Declaração antes da impressão fork () duas vezes [duplicado]
Esta pergunta já tem uma resposta aqui:
anomalia printf após “fork ()” 3 respostasEu estava experimentandofork()
e reorientação para verificar se as reorientações feitas nos pais também se aplicam à criança. Eu escrevi o seguinte programa simples
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main ()
{
freopen( "error.txt", "w+t", stdout ); // From now on, stdout = error.txt
printf (" ERROR! WHY DONT U UNDERSTAND?\n");
if ( fork() == 0 )
{
printf(" I AM CHILD\n");
exit(0);
}
else-
{
printf (" EITHER I AM A PARENT OR SOMETHING GOT SCREWED\n");
}
return 0;
}
A saída (error.txt
) Eu recebi é
ERROR! WHY DONT U UNDERSTAND?
EITHER I AM A PARENT OR SOMETHING GOT SCREWED
ERROR! WHY DONT U UNDERSTAND?
I AM CHILD
urpreendentemente,ERROR! WHY DONT U UNDERSTAND?
éimpressão duas vezes mesmo que pareça muito antes dofork()
é chamado e deve ser impresso apenas uma vez pelos pai
Alguém pode lançar alguma luz sobre isso?