【问题标题】:SIGCHLD signal does not issued when child resume子恢复时不发出 SIGCHLD 信号
【发布时间】:2012-05-29 04:21:28
【问题描述】:

这是我的信号处理程序:

pid_t pid;
int status;
while (pid = waitpid(-1, &status, WNOHANG|WUNTRACED|WCONTINUED))
{
     printf("resume? %d\n", WIFCONTINUED(status));
}

即使我将SIGCONT 发送给子进程,它也总是打印出 0。如果我使用killpgSIGCONT 发送到一组进程,则某些进程会被指示恢复,但某些进程不会。谁能告诉我为什么会这样?

【问题讨论】:

  • 代码 sn-p 缺少一对右括号。另外,请记住 waitpid 在错误时返回 -1,并且由于 -1 不为零,因此它被认为是 true。

标签: c unix process signals


【解决方案1】:

SIGCHLD 信号仅在子进程停止或终止时发出,而不是在执行恢复时发出。

【讨论】:

    猜你喜欢
    • 2015-01-20
    • 2018-05-02
    • 2013-07-20
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多