diff --git a/src/lxc/start.c b/src/lxc/start.c index 9a7e462d0..481776186 100644 --- a/src/lxc/start.c +++ b/src/lxc/start.c @@ -1063,8 +1063,13 @@ static int do_start(void *data) * setup on its console ie. the pty allocated in lxc_console_create() so * make sure that that pty is stdin,stdout,stderr. */ - if (lxc_console_set_stdfds(handler->conf->console.slave) < 0) - goto out_warn_father; + if (handler->conf->console.slave >= 0) + if (set_stdfds(handler->conf->console.slave) < 0) { + ERROR("Failed to redirect std{in,out,err} to pty file " + "descriptor %d", + handler->conf->console.slave); + goto out_warn_father; + } /* If we mounted a temporary proc, then unmount it now. */ tmp_proc_unmount(handler->conf); @@ -1142,8 +1147,12 @@ static int do_start(void *data) goto out_warn_father; } - if (handler->backgrounded && set_stdfds(devnull_fd)) - goto out_warn_father; + if (handler->conf->console.slave < 0 && handler->backgrounded) + if (set_stdfds(devnull_fd) < 0) { + ERROR("Failed to redirect std{in,out,err} to " + "\"/dev/null\""); + goto out_warn_father; + } if (devnull_fd >= 0) { close(devnull_fd);