mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-02 07:30:28 +00:00
start: dup std{in,out,err} to pty slave
In the case the container has a console with a valid slave pty file descriptor we duplicate std{in,out,err} to the slave file descriptor so console logging works correctly. When the container does not have a valid slave pty file descriptor for its console and is started daemonized we should dup to /dev/null. Closes #1646. Signed-off-by: Li Feng <lifeng68@huawei.com> Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
This commit is contained in:
parent
1a6cb1cea4
commit
c5b93afba1
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user