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 */
|
/* Wait for any child process(es) to exit */
|
||||||
while (1) {
|
while (1) {
|
||||||
pid_t wpid;
|
pid_t wpid;
|
||||||
|
int status;
|
||||||
struct init_action *a;
|
struct init_action *a;
|
||||||
|
|
||||||
wpid = waitpid(-1, NULL, WNOHANG);
|
wpid = waitpid(-1, &status, WNOHANG);
|
||||||
if (wpid <= 0)
|
if (wpid <= 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
a = mark_terminated(wpid);
|
a = mark_terminated(wpid);
|
||||||
if (a) {
|
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.",
|
"Scheduling for restart.",
|
||||||
a->command, (unsigned)wpid);
|
a->command, (unsigned)wpid,
|
||||||
|
s, ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue