From: Tycho Andersen Date: Fri, 19 Jan 2018 03:31:33 +0000 (+0000) Subject: lxc-execute: actually exit with the status of the spawned task X-Git-Tag: lxc-2.0.10~399 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cc00cc5669f265810b4eff327038194fbdc43e3b;p=thirdparty%2Flxc.git lxc-execute: actually exit with the status of the spawned task Now that we have things propagated through init and liblxc correctly, at least in non-daemon mode, we can exit with the actual exit status of the task, instead of always succeeding, which is not so helpful. Signed-off-by: Tycho Andersen --- diff --git a/src/lxc/tools/lxc_execute.c b/src/lxc/tools/lxc_execute.c index 73b12662f..ce49b5da6 100644 --- a/src/lxc/tools/lxc_execute.c +++ b/src/lxc/tools/lxc_execute.c @@ -168,14 +168,20 @@ int main(int argc, char *argv[]) c->daemonize = false; bret = c->start(c, 1, my_args.argv); - if (c->daemonize) - ret = EXIT_SUCCESS; - else - ret = c->error_num; lxc_container_put(c); if (!bret) { fprintf(stderr, "Failed run an application inside container\n"); exit(EXIT_FAILURE); } - exit(ret); + if (c->daemonize) + exit(EXIT_SUCCESS); + else { + if (WIFEXITED(c->error_num)) { + exit(WEXITSTATUS(c->error_num)); + } else { + /* Try to die with the same signal the task did. */ + kill(0, WTERMSIG(c->error_num)); + exit(EXIT_FAILURE); + } + } }