Eksperymentowałem z fork()
i zmieniłem kierunek, aby sprawdzić, czy instrukcje dotyczące powrotu u rodzica odnoszą się również do dziecka. Napisałem następujący prosty programDeklaracja przed dwukrotnym wydrukowaniem 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;
}
Wyjście (error.txt
) mam to
ERROR! WHY DONT U UNDERSTAND?
EITHER I AM A PARENT OR SOMETHING GOT SCREWED
ERROR! WHY DONT U UNDERSTAND?
I AM CHILD
Niespodziewanie, ERROR! WHY DONT U UNDERSTAND?
jest drukowanie dwukrotnie choć wydaje się znacznie przed fork()
nazywa i powinien drukuje tylko jeden raz rodzic.
Czy ktoś może rzucić trochę światła na to?
Nie jestem tego pewien, ale upewnij się, że opróżnisz bufory io, przed widelcem. może bufory zostaną skopiowane do dziecka. – lupz
Zapewniłoby to doskonałe pytanie dotyczące wywiadu! – dasblinkenlight