此代码中父进程的结尾是什么?我看没有看到他离开任何地方... 我的一个朋友说父母并没有被终止/被绑架,代码只是在最后一个出口(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
答案 0 :(得分:1)
来自this POSIX reference on sleep
:
如果
sleep()
由于请求的时间已经过去而返回,则返回值为0。如果sleep()
由于信号的传递而返回,则返回值为“未睡眠”量(请求的时间减去实际睡眠的时间)(以秒为单位)。
对您来说,发生的事情是,当父进程收到SIGCHLD
信号时,它将导致sleep
函数被中断,并且父进程在sleep
调用之后继续运行。
如果您想全额睡眠,则需要检查sleep
返回的内容,并循环调用sleep
,直到返回0
。