diff options
Diffstat (limited to 'init/sigchld_handler.cpp')
-rw-r--r-- | init/sigchld_handler.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/init/sigchld_handler.cpp b/init/sigchld_handler.cpp index 3ec76df0b..0b0332429 100644 --- a/init/sigchld_handler.cpp +++ b/init/sigchld_handler.cpp @@ -81,16 +81,15 @@ static bool ReapOneProcess() { } } - 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 (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; } if (!service) return true; - service->Reap(); + service->Reap(siginfo); if (service->flags() & SVC_TEMPORARY) { ServiceList::GetInstance().RemoveService(*service); |