current pids per tty
Ian Smith
smithi at nimnet.asn.au
Wed Apr 4 13:18:59 UTC 2012
In freebsd-questions Digest, Vol 409, Issue 5, Message: 3
On Wed, 04 Apr 2012 08:03:11 -0700, perryh at pluto.rain.com wrote:
> "illoai at gmail.com" <illoai at 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
More information about the freebsd-questions
mailing list