diff --git a/src/main.rs b/src/main.rs index 62035960959e346618d6a53056dd70ce24879f43..8bb81e2052f8bb8d7c4788e7deb52af625c09b1f 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() {