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 <tycho@tycho.ws>
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);
+ }
+ }
}