Statement before fork () druckt zweimal [duplizieren]

Diese Frage hat hier bereits eine Antwort:

printf Anomalie nach "fork ()" 3 answers

Ich habe mit @ experimentiefork() und Umleitung, um zu prüfen, ob die im übergeordneten Element vorgenommenen Umleitungen auch für das untergeordnete Element gelten. Ich schrieb das folgende einfache Programm

#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;
}

Die Ausgabe (error.txt) Ich habe ist

ERROR!  WHY DONT U UNDERSTAND?
EITHER I AM A PARENT OR SOMETHING GOT SCREWED
ERROR!  WHY DONT U UNDERSTAND?
I AM CHILD

berraschenderweiERROR! WHY DONT U UNDERSTAND? ist zweimal drucken obwohl es viel vor dem @ erscheifork() wird aufgerufen und sollte vom übergeordneten Element nur einmal gedruckt werden.

Kann jemand Licht ins Dunkel bringen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage