diff options
Diffstat (limited to 'init/sigchld_handler.cpp')
-rw-r--r-- | init/sigchld_handler.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/init/sigchld_handler.cpp b/init/sigchld_handler.cpp index badacaf1c..072a0fb0b 100644 --- a/init/sigchld_handler.cpp +++ b/init/sigchld_handler.cpp @@ -84,15 +84,16 @@ static bool ReapOneProcess() { } } - if (siginfo.si_code == CLD_EXITED) { - LOG(INFO) << name << " exited with status " << siginfo.si_status << wait_string; - } else { - LOG(INFO) << name << " received signal " << siginfo.si_status << wait_string; + auto status = siginfo.si_status; + if (WIFEXITED(status)) { + LOG(INFO) << name << " exited with status " << WEXITSTATUS(status) << wait_string; + } else if (WIFSIGNALED(status)) { + LOG(INFO) << name << " killed by signal " << WTERMSIG(status) << wait_string; } if (!service) return true; - service->Reap(siginfo); + service->Reap(); if (service->flags() & SVC_TEMPORARY) { ServiceList::GetInstance().RemoveService(*service); |