如何解决为什么父项在C中使用fork进行2次打印
我正在学习fork(),然后尝试做一个小程序,在父母之前打印孩子。可以,但是父母打印了2次,我不明白为什么。
预期输出:
4 5 6
1 2 3
实际输出:
4 5 6
1 2 3
1 2 3
这是我的代码:
int main (int argc,char** argv) {
int childPid = fork();
if (childPid == 0){
printf("4 5 6\n");
}
wait(NULL);
printf("1 2 3\n");
exit(0);
}
解决方法
printf("1 2 3\n");
行将由父级和子级执行。子项将面对 wait(NULL);
行,但由于没有子项,因此将跳过它,并显示“ 1 2 3”,然后退出。同时,父母将收到孩子的终止状态,并通过打印“ 1 2 3”并退出来继续执行。为了使其正常工作,请对其进行相应的编辑:
int main (int argc,char** argv) {
int childPid = fork();
if (childPid == 0){
printf("4 5 6\n");
exit(0);
}
wait(NULL);
printf("1 2 3\n");
exit(0);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。