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); + } + } }