[Bug 261200] Unable to pipe the output of jobs in sh
- In reply to: bugzilla-noreply_a_freebsd.org: "[Bug 261200] Unable to pipe the output of jobs in sh"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 18 Jan 2022 18:15:15 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=261200 --- Comment #5 from Ron Wills <ron@digitalcombine.ca> --- While tracing a simple script like: sleep 1000& jobs jobs | cat I find that the first execution of jobs is executed by the shell process itself and the second piped jobs is forked then executed in a child process. In both cases the jobtab, found in jobs.c, has four entries in it but in the child process all the jobs are marked unused. In the function forkshell(), found in jobs.c, there's a section of code for the new child process that clears the jobtab. for (i = njobs, p = jobtab ; -- i >= 0 ; p++) if (p->used) freejob(p); And this is the reason why jobs shows no entries when piped. I'm not sure why this is done. I'm assuming this is possibly to prevent the child process from doing some kind of job clean up later... I'll keep digging into this as time permits ;) -- You are receiving this mail because: You are the assignee for the bug.