5

SIGCHLD 的维基百科页面说:

SIGCHLD 信号在子进程退出、中断或中断后恢复时发送给子进程的父进程。

这是否意味着当父进程向子进程发送任何信号(例如SIGTERM)时,它又会收到子进程的SIGCHLD回复?

还是我误解了中断(我认为它是指接收到的任何信号),在这种情况下,涉及哪些信号?

4

1 回答 1

6

在这些情况下,将 SIGCHLD 传递给父级:

  • 子进程退出。
  • 子进程被 SIGSTOP、SIGTSTP、SIGTTIN 或 SIGTTOU 信号停止
  • 子进程由 SIGCONT 信号恢复

我认为 SIGSTOP/SIGCONT 是维基百科所说的“中断”。

SIGTERM 的默认处理程序是终止进程。因此,如果父进程向终止该子进程的子进程发送 SIGTERM,那么是的 - 父进程将收到一个 SIGCHLD。

如果子进程安装了一个不终止它的信号处理程序,则不会有 SIGCHLD 信号传递给父进程。

于 2013-08-26T10:48:30.843 回答