【发布时间】:2015-06-15 19:30:37
【问题描述】:
我有一个主进程,它分叉了一些子进程。
每个孩子都会做某事并阻止自己。通过阻塞自己,每个子进程都会向父进程发送SICHLD 信号。
我还在主流程代码中声明了一个sigaction 操作,以捕获孩子们将发送的SIGCLHD。
static struct sigaction action;
action.sa_handler = handler
sigfillset(&(action.sa_mask));
sigaction(SIGCHLD, &action, NULL);
SIGCHLD 处理程序在调用时会检查哪个孩子发送了SIGCHLD 信号并为那个孩子做一些事情。
问题是,如果多个孩子同时发送信号会发生什么?假设孩子(1)发送了SIGCHLD。处理程序捕获它并且在他完成句柄之前,kid(2) 和kid(3) 都发送信号。处理完 child(1) 后,处理程序会针对每个信号运行,还是会忽略这些信号?
【问题讨论】: