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-3.0.0.beta1~74^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f9eff9505328c1ec5ef05f07c0e27c0c51cf8361;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 dc1f504e7..98f846fc2 100644 --- a/src/lxc/tools/lxc_execute.c +++ b/src/lxc/tools/lxc_execute.c @@ -213,14 +213,20 @@ int main(int argc, char *argv[]) c->daemonize = my_args.daemonize == 1; 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); + } + } }