diff mbox series

jobs: Report creation of background jobs

Message ID 61501d4a.OSIdlouybdqIzH3I%rmy@frippery.org (mailing list archive)
State Rejected
Delegated to: Herbert Xu
Headers show
Series jobs: Report creation of background jobs | expand

Commit Message

Ron Yorston Sept. 26, 2021, 7:12 a.m. UTC
Although it doesn't seem to be in POSIX it's relatively common
for interactive shells to report details of jobs run in the
background.  bash, ksh and tcsh report job id and pid while
the Bourne shell from Unix V7 reports only the pid.

This from bash:

   $ sleep 100 & sleep 200 &
   [1] 4626
   [2] 4627
   $ sleep 300 | sleep 400 &
   [3] 4636
   $ jobs -l
   [1]   4626 Running                 sleep 100 &
   [2]-  4627 Running                 sleep 200 &
   [3]+  4635 Running                 sleep 300
         4636                       | sleep 400 &

Unlike reporting of job completions such messages are not controlled
by 'set -m'.

ash has never supported reporting of the creation of background
jobs.  Add this feature to dash.

Signed-off-by: Ron Yorston <rmy@frippery.org>
---
 src/jobs.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Herbert Xu April 5, 2024, 8:49 a.m. UTC | #1
On Sun, Sep 26, 2021 at 08:12:10AM +0100, Ron Yorston wrote:
> Although it doesn't seem to be in POSIX it's relatively common
> for interactive shells to report details of jobs run in the
> background.  bash, ksh and tcsh report job id and pid while
> the Bourne shell from Unix V7 reports only the pid.
> 
> This from bash:
> 
>    $ sleep 100 & sleep 200 &
>    [1] 4626
>    [2] 4627
>    $ sleep 300 | sleep 400 &
>    [3] 4636
>    $ jobs -l
>    [1]   4626 Running                 sleep 100 &
>    [2]-  4627 Running                 sleep 200 &
>    [3]+  4635 Running                 sleep 300
>          4636                       | sleep 400 &
> 
> Unlike reporting of job completions such messages are not controlled
> by 'set -m'.
> 
> ash has never supported reporting of the creation of background
> jobs.  Add this feature to dash.
> 
> Signed-off-by: Ron Yorston <rmy@frippery.org>
> ---
>  src/jobs.c | 2 ++
>  1 file changed, 2 insertions(+)

Thanks but as minimalism is one of the primary goals of dash
I won't be applying this.
diff mbox series

Patch

diff --git a/src/jobs.c b/src/jobs.c
index f3b9ffc..4e0cdcc 100644
--- a/src/jobs.c
+++ b/src/jobs.c
@@ -932,6 +932,8 @@  static void forkparent(struct job *jp, union node *n, int mode, pid_t pid)
 	if (mode == FORK_BG) {
 		backgndpid = pid;		/* set $! */
 		set_curjob(jp, CUR_RUNNING);
+		if (iflag && jp && jp->nprocs == 0)
+			outfmt(out2, "[%d] %d\n", jobno(jp), pid);
 	}
 	if (jp) {
 		struct procstat *ps = &jp->ps[jp->nprocs++];