Состояние перед печатью 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() вызывается и должен быть напечатан только один раз родителем.

Может кто-нибудь пролить некоторый свет на это

Ответы на вопрос(4)

Ваш ответ на вопрос