Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 4 Apr 2012 23:18:23 +1000 (EST)
From:      Ian Smith <smithi@nimnet.asn.au>
To:        perryh@pluto.rain.com
Cc:        illoai@gmail.com, freebsd-questions@freebsd.org
Subject:   Re: current pids per tty
Message-ID:  <20120404230032.B2060@sola.nimnet.asn.au>
In-Reply-To: <20120404120037.B3B8110657DE@hub.freebsd.org>
References:  <20120404120037.B3B8110657DE@hub.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
In freebsd-questions Digest, Vol 409, Issue 5, Message: 3
On Wed, 04 Apr 2012 08:03:11 -0700, perryh@pluto.rain.com wrote:
 > "illoai@gmail.com" <illoai@gmail.com> wrote:
 > 
 > > (there is an executable named /usr/bin/jobs, but . . .
 > > well run "cat /usr/bin/jobs" & see for yourself).
 > 
 > Whoa!  Does /usr/bin/jobs even work?
 > 
 >   $ cat /usr/bin/jobs
 >   #!/bin/sh
 >   # $FreeBSD: src/usr.bin/alias/generic.sh,v 1.2.10.1.4.1 2010/06/14 02:09:06 kensmith Exp $
 >   # This file is in the public domain.
 >   builtin ${0##*/} ${1+"$@"}
 > 
 > It looks as if generic.sh intends to have the same effect as the
 > builtin matching the name under which the script is run, but at
 > least for "jobs" I don't think it will DTRT because it will run
 > in the wrong context:
 > 
 > * The builtin "jobs" command will report all background jobs known
 >   to the shell in which it is issued.
 > 
 > * Because it is a shebang script, running /usr/bin/jobs will cause
 >   the shell in which it is run to fork/exec an instance of /bin/sh,
 >   and that instance will execute the /usr/bin/jobs script, thus it
 >   will will be the new /bin/sh instance that executes _its_ builtin
 >   "jobs" command -- reporting nothing, since _that_ instance has not
 >   put anything into the background (and has no knowledge of what-all
 >   its parent shell may have put in the background).

Quite so:

t23# jobs -l
t23# sleep 60 &
[1] 86793
t23# jobs -l
[1]  + 86793 Running                       sleep 60
t23# /usr/bin/jobs -l
t23# jobs -l
[1]  + 86793 Running                       sleep 60
t23# sh
# jobs -l
# sleep 60 &
# jobs -l
[1] + 86819 Running           sleep 60
# /usr/bin/jobs -l
# jobs -l
[1] + 86819 Running           sleep 60
# exit
t23# jobs -l
[1]  + 86793 Running                       sleep 60
t23# jobs -l
[1]    86793 Done                          sleep 60
t23# jobs -l
t23#

cheers, Ian



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120404230032.B2060>