【发布时间】:2019-05-28 10:19:13
【问题描述】:
这段代码中父进程的结束是什么?我看没有看到他从任何地方退出...... 我的一个朋友说父母没有结束/杀死,代码只是停在最后一个出口(0)。如果是这种情况,那么是什么将父进程从睡眠中唤醒?提前谢谢你
adghtesd
节目结果:
parent: I'm the parent
child: I'm the child
child: I'm exiting
parent: child process (PID=1919) exited with value 123
parent: exiting
test
【问题讨论】:
-
父进程运行函数
il_parent。然后il_parent函数返回,并返回到main函数及其switch。switch结束,最后的exit(0)函数被调用。如果您尝试通过rubber duck debugging 或通过在实际调试器中单步调试代码来调试程序,则可以轻松验证这一点。 -
@Someprogrammerdude 但代码在孩子结束工作后立即停止。注意孩子有 3 秒的睡眠,父母有 10 秒,但是在孩子结束后,父母立即停止睡眠,代码以 exit(0) 结束。
-
@MrMoil 顺便说一句,不允许从信号处理程序调用
exit(以及printf)。