diff -up ksh-20100621/src/cmd/ksh93/sh/jobs.c.origos ksh-20100621/src/cmd/ksh93/sh/jobs.c --- ksh-20100621/src/cmd/ksh93/sh/jobs.c.origos 2011-08-10 16:31:47.063439621 +0200 +++ ksh-20100621/src/cmd/ksh93/sh/jobs.c 2011-08-10 16:31:54.563459433 +0200 @@ -1194,7 +1194,7 @@ int job_post(pid_t pid, pid_t join) job.pwlist = pw; pw->p_env = sh.curenv; pw->p_pid = pid; - if(!sh.outpipe || (sh_isoption(SH_PIPEFAIL) && job.waitall)) + if(!sh.outpipe || (sh_isoption(SH_PIPEFAIL) && job.waitall) || sh.cpid==pid) pw->p_flag = P_EXITSAVE; pw->p_exitmin = sh.xargexit; pw->p_exit = 0;