是什么杀死了父进程?

时间:2019-05-28 10:19:13

标签: c unix process posix kill

此代码中父进程的结尾是什么?我看没有看到他离开任何地方... 我的一个朋友说父母并没有被终止/被绑架,代码只是在最后一个出口(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

1 个答案:

答案 0 :(得分:1)

来自this POSIX reference on sleep

  

如果sleep()由于请求的时间已经过去而返回,则返回值为0。如果sleep()由于信号的传递而返回,则返回值为“未睡眠”量(请求的时间减去实际睡眠的时间)(以秒为单位)。

对您来说,发生的事情是,当父进程收到SIGCHLD信号时,它将导致sleep函数被中断,并且父进程在sleep调用之后继续运行。

>

如果您想全额睡眠,则需要检查sleep返回的内容,并循环调用sleep,直到返回0