mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-07 00:42:51 +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
|
* setup on its console ie. the pty allocated in lxc_console_create() so
|
||||||
* make sure that that pty is stdin,stdout,stderr.
|
* make sure that that pty is stdin,stdout,stderr.
|
||||||
*/
|
*/
|
||||||
if (lxc_console_set_stdfds(handler->conf->console.slave) < 0)
|
if (handler->conf->console.slave >= 0)
|
||||||
goto out_warn_father;
|
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. */
|
/* If we mounted a temporary proc, then unmount it now. */
|
||||||
tmp_proc_unmount(handler->conf);
|
tmp_proc_unmount(handler->conf);
|
||||||
@ -1142,8 +1147,12 @@ static int do_start(void *data)
|
|||||||
goto out_warn_father;
|
goto out_warn_father;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (handler->backgrounded && set_stdfds(devnull_fd))
|
if (handler->conf->console.slave < 0 && handler->backgrounded)
|
||||||
goto out_warn_father;
|
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) {
|
if (devnull_fd >= 0) {
|
||||||
close(devnull_fd);
|
close(devnull_fd);
|
||||||
|
Loading…
Reference in New Issue
Block a user