Shell: Move the first command in a pipeline to the pipeline pgid too

This process is supposed to be the session leader of the pipeline
process group, we can't *not* move it into that group :P
This commit is contained in:
AnotherTest 2020-09-12 23:41:07 +04:30 committed by Andreas Kling
parent d366e996dd
commit 063fb02ef4
Notes: sideshowbarker 2024-07-19 02:42:54 +09:00

View file

@ -622,12 +622,14 @@ RefPtr<Job> Shell::run_command(const AST::Command& command)
}
pid_t pgid = is_first ? child : (command.pipeline ? command.pipeline->pgid : child);
if (!m_is_subshell && command.should_wait) {
if ((!m_is_subshell && command.should_wait) || command.pipeline) {
if (setpgid(child, pgid) < 0)
perror("setpgid");
tcsetpgrp(STDOUT_FILENO, pgid);
tcsetpgrp(STDIN_FILENO, pgid);
if (!m_is_subshell) {
tcsetpgrp(STDOUT_FILENO, pgid);
tcsetpgrp(STDIN_FILENO, pgid);
}
}
while (write(sync_pipe[1], "x", 1) < 0) {