diff --git a/Shell/Shell.cpp b/Shell/Shell.cpp index 296630b507..adec2a7001 100644 --- a/Shell/Shell.cpp +++ b/Shell/Shell.cpp @@ -733,8 +733,10 @@ RefPtr Shell::run_command(const AST::Command& command) perror("setpgid"); if (!m_is_subshell) { - tcsetpgrp(STDOUT_FILENO, pgid); - tcsetpgrp(STDIN_FILENO, pgid); + if (tcsetpgrp(STDOUT_FILENO, pgid) != 0) + perror("tcsetpgrp(OUT)"); + if (tcsetpgrp(STDIN_FILENO, pgid) != 0) + perror("tcsetpgrp(IN)"); } } diff --git a/Shell/main.cpp b/Shell/main.cpp index 5961086680..ff26634913 100644 --- a/Shell/main.cpp +++ b/Shell/main.cpp @@ -209,6 +209,13 @@ int main(int argc, char** argv) parser.parse(argc, argv); + if (getsid(getpid()) == 0) { + if (setsid() < 0) { + perror("setsid"); + // Let's just hope that it's ok. + } + } + shell->current_script = argv[0]; if (!skip_rc_files) {