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?