init: improve log message when a process exits: show exit code
function old new delta .rodata 105649 105680 +31 init_main 776 804 +28 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 59/0) Total: 59 bytes Signed-off-by: Sébastien Parisot <sparisot@free-mobile.fr> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
887295686d
commit
f9274e8d6e
1 changed files with 15 additions and 3 deletions
18
init/init.c
18
init/init.c
|
@ -1198,17 +1198,29 @@ int init_main(int argc UNUSED_PARAM, char **argv)
|
|||
/* Wait for any child process(es) to exit */
|
||||
while (1) {
|
||||
pid_t wpid;
|
||||
int status;
|
||||
struct init_action *a;
|
||||
|
||||
wpid = waitpid(-1, NULL, WNOHANG);
|
||||
wpid = waitpid(-1, &status, WNOHANG);
|
||||
if (wpid <= 0)
|
||||
break;
|
||||
|
||||
a = mark_terminated(wpid);
|
||||
if (a) {
|
||||
message(L_LOG, "process '%s' (pid %u) exited. "
|
||||
const char *s = "killed, signal";
|
||||
int ex = WTERMSIG(status);
|
||||
/* "if (!WIFSIGNALED(status))" generates more code:
|
||||
* on linux, WIFEXITED(status) is "WTERMSIG(status) == 0"
|
||||
* and WTERMSIG(status) is known, so compiler optimizes.
|
||||
*/
|
||||
if (WIFEXITED(status)) {
|
||||
s = "exited, exitcode";
|
||||
ex = WEXITSTATUS(status);
|
||||
}
|
||||
message(L_LOG, "process '%s' (pid %u) %s:%d. "
|
||||
"Scheduling for restart.",
|
||||
a->command, (unsigned)wpid);
|
||||
a->command, (unsigned)wpid,
|
||||
s, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue