我正在試驗fork()
並重新檢查是否在父項中重做的方向也適用於孩子。我寫了下面的簡單程序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
出人意料的是,ERROR! WHY DONT U UNDERSTAND?
是打印兩次前fork()
被調用,應該即使它看起來多少隻能由父母打印一次。
任何人都可以對此有所瞭解嗎?
我不確定這個,但確保你在fork之前刷新io-buffers。也許緩衝區被複制到孩子。 – lupz
這將成爲一個優秀的面試問題! – dasblinkenlight