Состояние перед печатью fork () дважды [дубликата]
На этот вопрос уже есть ответ:
printf аномалия после «fork ()» 3 ответа Я экспериментировал сfork()
и перенаправить, чтобы проверить, относятся ли перенаправления, выполненные в родителе, и к ребенку. Я написал следующую простую программу
#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;
}
Выход (error.txt
) Я получил это
ERROR! WHY DONT U UNDERSTAND?
EITHER I AM A PARENT OR SOMETHING GOT SCREWED
ERROR! WHY DONT U UNDERSTAND?
I AM CHILD
Удивительно,ERROR! WHY DONT U UNDERSTAND?
является печатать дважды хотя он появляется намного раньше, чемfork()
вызывается и должен быть напечатан только один раз родителем.
Может кто-нибудь пролить некоторый свет на это