我运行这个编。在前景和背景:在后台拨叉不工作正确
int main()
{
int pid;
printf("App Start pid=%d!\n",getpid());
while(1) {
pid=fork();
if(pid==0) {
printf("Child\n\n");
exit(0);
}
else if(pid>0) {
printf("Parent\n");
}
sleep(1);
}
}
前景:
$ ./fork
结果是:
App Start pid=1360!
Parent
Child
Parent
Child
...
背景:
$./fork > out.txt &
$cat out.txt
App Start pid=1368!
Child
App Start pid=1368!
Parent
Child
App Start pid=1368!
Parent
Parent
Child
...
为什么应用程序 '重启' 在背景? 我不明白发生了什么事。 我如何让叉子在后台应用程序中正常工作? 感谢
缓冲标准输出的另一个好的答案:stackoverflow.com/a/39536803/646887 –