From a7fb6043b9208d8a13ddf814bb0ee86f9e6a10be Mon Sep 17 00:00:00 2001 From: Tycho Andersen Date: Wed, 21 Sep 2016 21:45:49 +0000 Subject: [PATCH] c/r: detatch from controlling tty on restore Signed-off-by: Tycho Andersen --- src/lxc/criu.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/lxc/criu.c b/src/lxc/criu.c index 3e586b9d5..67d6fdc55 100644 --- a/src/lxc/criu.c +++ b/src/lxc/criu.c @@ -662,9 +662,22 @@ static void do_restore(struct lxc_container *c, int status_pipe, struct migrate_ { pid_t pid; struct lxc_handler *handler; - int status; + int status, fd; int pipes[2] = {-1, -1}; + /* Try to detach from the current controlling tty if it exists. + * Othwerise, lxc_init (via lxc_console) will attach the container's + * console output to the current tty, which is probably not what any + * library user wants, and if they do, they can just manually configure + * it :) + */ + fd = open("/dev/tty", O_RDWR); + if (fd >= 0) { + if (ioctl(fd, TIOCNOTTY, NULL) < 0) + SYSERROR("couldn't detach from tty"); + close(fd); + } + handler = lxc_init(c->name, c->lxc_conf, c->config_path); if (!handler) goto out;