Estado antes de fork () imprimiendo dos veces [duplicado]

Esta pregunta ya tiene una respuesta aquí:

printf anomalía después de "fork ()" 3 respuestas

Estaba experimentando confork() y redireccionar para verificar si las redirecciones realizadas en el padre también se aplican al hijo. Escribí el siguiente programa simple

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

La salida (error.txt) Tengo es

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

Sorprendentemente,ERROR! WHY DONT U UNDERSTAND? esimprimir dos veces a pesar de que aparece mucho antes de lafork() se llama y solo debe imprimirlo una vez el padre.

¿Alguien puede arrojar algo de luz sobre esto

Respuestas a la pregunta(4)

Su respuesta a la pregunta