|
Lines 151-157
static void
Link Here
|
| 151 |
sigchld_handler(int sig) |
151 |
sigchld_handler(int sig) |
| 152 |
{ |
152 |
{ |
| 153 |
int save_errno = errno; |
153 |
int save_errno = errno; |
| 154 |
debug("Received SIGCHLD."); |
|
|
| 155 |
child_terminated = 1; |
154 |
child_terminated = 1; |
| 156 |
signal(SIGCHLD, sigchld_handler); |
155 |
signal(SIGCHLD, sigchld_handler); |
| 157 |
notify_parent(); |
156 |
notify_parent(); |
|
Lines 752-757
collect_children(void)
Link Here
|
| 752 |
sigaddset(&nset, SIGCHLD); |
751 |
sigaddset(&nset, SIGCHLD); |
| 753 |
sigprocmask(SIG_BLOCK, &nset, &oset); |
752 |
sigprocmask(SIG_BLOCK, &nset, &oset); |
| 754 |
if (child_terminated) { |
753 |
if (child_terminated) { |
|
|
754 |
debug("Received SIGCHLD."); |
| 755 |
while ((pid = waitpid(-1, &status, WNOHANG)) > 0 || |
755 |
while ((pid = waitpid(-1, &status, WNOHANG)) > 0 || |
| 756 |
(pid < 0 && errno == EINTR)) |
756 |
(pid < 0 && errno == EINTR)) |
| 757 |
if (pid > 0) |
757 |
if (pid > 0) |