这个问题已经在这里有一个答案:
- 后的printf异常“叉()” 3个答案
我与实验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?
ERROR! WHY DONT U UNDERSTAND?
正在打印的两倍 ,即使它大部分之前出现fork()
被调用,并只能由父打印一次。
任何人都可以阐明这一些轻?