Ich experimentierte mit fork()
und re-direction, um zu überprüfen, ob die im Elternteil vorgenommenen Umleitungen auch für das Kind gelten. Ich schrieb das folgende einfache ProgrammStatement vor fork() zweimal drucken
#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;
}
Der Ausgang (error.txt
) Ich habe
ERROR! WHY DONT U UNDERSTAND?
EITHER I AM A PARENT OR SOMETHING GOT SCREWED
ERROR! WHY DONT U UNDERSTAND?
I AM CHILD
Überraschenderweise ist, ERROR! WHY DONT U UNDERSTAND?
ist Druck zweimal obwohl es viel erscheint, bevor der fork()
genannt wird und sollte nur einmal vom Elternteil gedruckt werden.
Kann jemand etwas Licht darauf werfen?
Ich bin mir nicht sicher über diese, aber stellen Sie sicher, Sie spülen io-Puffer, vor der Gabelung. Vielleicht werden die Puffer auf das Kind kopiert. – lupz
Dies würde für eine ausgezeichnete Interviewfrage sorgen! – dasblinkenlight