在 Unix 中,当后台的子进程终止时,它会向父进程发送一个 SIGCHLD
信号,通知它它已终止。
即使进程在前台也会发生同样的情况吗?如果是这样,这意味着 parent 将忽略它。
这样对吗?或者如果它在前台,那么根本没有发送信号?
最佳答案
background 和 foreground 是作业控制的概念,是 shell 的一部分。它们应用于进程并且不影响哪个进程生成(执行)另一个进程。
子进程是 fork()-exec() 调用的结果。子进程获得执行 fork() 调用的进程的父 pid。这是 SIGCHLD 信号的上下文,父 pid 接收到 SIGCHLD 信号。子进程是“前台”还是“后台”并不重要,只有 ppid 对进程退出有影响。
关于c - SIGCHLD信号处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9845991/