diff options
author | Bart Schaefer <schaefer@zsh.org> | 2022-04-29 20:25:53 -0700 |
---|---|---|
committer | Bart Schaefer <schaefer@zsh.org> | 2022-04-29 20:25:53 -0700 |
commit | 15bf8ace168a86d0fae90b10e9f706baddd4c0bf (patch) | |
tree | 311f341dec249d4f6accccc8e56cebeb4121a02f /Src | |
parent | 8eccdc5cb7311676820db5b03895f64748f33636 (diff) | |
download | zsh-15bf8ace168a86d0fae90b10e9f706baddd4c0bf.tar.gz zsh-15bf8ace168a86d0fae90b10e9f706baddd4c0bf.tar.xz zsh-15bf8ace168a86d0fae90b10e9f706baddd4c0bf.zip |
50134: Tweak process group handling to prevent unkillable pipelines
In some cases the process group leader of the forked-left side of a pipe needs to be set to the pipe process PID rather than to the group leader PID returned by entersubsh().
Diffstat (limited to 'Src')
-rw-r--r-- | Src/jobs.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/Src/jobs.c b/Src/jobs.c index af0a1233d..85d4c4d1f 100644 --- a/Src/jobs.c +++ b/Src/jobs.c @@ -1476,7 +1476,10 @@ addproc(pid_t pid, char *text, int aux, struct timeval *bgtime, * set it for that, too. */ if (gleader != -1) { - jobtab[thisjob].gleader = gleader; + if (jobtab[thisjob].stat & STAT_CURSH) + jobtab[thisjob].gleader = gleader; + else + jobtab[thisjob].gleader = pid; if (list_pipe_job_used != -1) jobtab[list_pipe_job_used].gleader = gleader; /* |