mirror of
https://github.com/RGBCube/serenity
synced 2025-05-20 18:15:07 +00:00
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:
parent
d366e996dd
commit
063fb02ef4
1 changed files with 5 additions and 3 deletions
|
@ -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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue