From 68c6a0725a815f7f6350f3e9634a1de37f09a3f7 Mon Sep 17 00:00:00 2001 From: Xavier L'Heureux <xavier.lheureux@icloud.com> Date: Thu, 4 Jul 2019 09:31:50 -0400 Subject: [PATCH] Use a finer-grained approach to setting the terminal leader --- src/main.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index 62035960..8bb81e20 100644 --- a/src/main.rs +++ b/src/main.rs @@ -133,12 +133,14 @@ fn parse_args() -> CommandLineArgs { fn set_unique_pid() -> nix::Result<()> { let pgid = unistd::getpid(); - if pgid == unistd::tcgetpgrp(nix::libc::STDIN_FILENO)? { - return Ok(()); + if pgid != unistd::getpgrp() { + unistd::setpgid(pgid, pgid)?; } - unistd::setpgid(pgid, pgid)?; - unsafe { signal::signal(Signal::SIGTTOU, SigHandler::SigIgn) }?; - unistd::tcsetpgrp(nix::libc::STDIN_FILENO, pgid) + if pgid != unistd::tcgetpgrp(nix::libc::STDIN_FILENO)? { + unsafe { signal::signal(Signal::SIGTTOU, SigHandler::SigIgn) }?; + unistd::tcsetpgrp(nix::libc::STDIN_FILENO, pgid)?; + } + Ok(()) } fn main() { -- GitLab