这是我的代码:
int main(int arg, char *argv[]){
short pid;
if((pid = fork()) == 0){
printf("Child is runningn");
while(1) ;
} else {
printf("Parent is runningn");
}
}
在运行此之后;家长正在运行";已打印到控制台。如果我删除while循环,两条语句都会打印到控制台。如果子打印语句出现在while循环之前,为什么while循环会导致该语句被忽略?
在我的例子中,两个语句都在stdout上打印。我正在使用Arch Linux
[tushar@arch Desktop]$ ./main
Parent is running
Child is running
在我的情况下,while(1);
被忽略,即使在删除该行输出之后,也与上面提到的相同。
在打印";家长正在运行";到stdout,您的程序退出,然后"孩子在跑步;已打印到stdout。
我建议你阅读c中的这篇文章fork((。另外使用fflush(stdout);
。顺便说一句,我从未使用过minix
。