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;
}
私が得た出力(error.txt
)は
ERROR! WHY DONT U UNDERSTAND?
EITHER I AM A PARENT OR SOMETHING GOT SCREWED
ERROR! WHY DONT U UNDERSTAND?
I AM CHILD
が呼び出されるずっと前に表示され、親によって 1 回だけ印刷されるべきであるにもかかわらず、驚くべきことに、ERROR! WHY DONT U UNDERSTAND?
は2 回印刷されます。fork()
誰でもこれに光を当てることができますか?