From: Nicolas Douma Date: Tue, 17 Sep 2019 03:07:00 +0000 (+0200) Subject: nspawn: surrender controlling terminal to PID2 when using the PID1 stub X-Git-Tag: v244~271 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=de1b29f375b13b0566814517bf81e3cdbdd9a610;p=platform%2Fupstream%2Fsystemd.git nspawn: surrender controlling terminal to PID2 when using the PID1 stub --- diff --git a/src/nspawn/nspawn-stub-pid1.c b/src/nspawn/nspawn-stub-pid1.c index ebf4f0f..0589685 100644 --- a/src/nspawn/nspawn-stub-pid1.c +++ b/src/nspawn/nspawn-stub-pid1.c @@ -53,6 +53,12 @@ int stub_pid1(sd_id128_t uuid) { assert_se(sigfillset(&fullmask) >= 0); assert_se(sigprocmask(SIG_BLOCK, &fullmask, &oldmask) >= 0); + /* Surrender the terminal this stub may control so that child processes can have a controlling terminal + * without resorting to setsid hacks. */ + r = ioctl(STDIN_FILENO, TIOCNOTTY); + if (r < 0 && errno != ENOTTY) + return log_error_errno(errno, "Failed to surrender controlling terminal: %m"); + pid = fork(); if (pid < 0) return log_error_errno(errno, "Failed to fork child pid: %m");