scm@dlcq15.datlog.co.uk (Steve Mawer) (11/17/89)
I have a small problem with the following script:
---------------------SCRIPT STARTS----------
(
echo subshell - $$
sleep 10
) &
echo shell - $!
----------------------SCRIPT ENDS-----------
When run, it produces the following output:
$ sh script
subshell - 25654
shell - 25655
$
My question is twofold, firstly why aren't the two PIDs identical,
and secondly, as they're not, why is the PID of the last background
process 1 greater than the current process PID of the subshell?
E-mail replies for preference, I'll summarize if there's sufficient
interest.
--
Steve C. Mawer <scm@datlog.co.uk> or < {backbone}!ukc!datlog!scm >
Voice: +44 1 863 0383 (x2153)cpcahil@virtech.uucp (Conor P. Cahill) (11/20/89)
In article <1989Nov17.105828.2894@dlcq15.datlog.co.uk>, scm@dlcq15.datlog.co.uk (Steve Mawer) writes: > ( > echo subshell - $$ > sleep 10 > ) & > echo shell - $! > > When run, it produces the following output: > > $ sh script > subshell - 25654 > shell - 25655 > $ > > My question is twofold, firstly why aren't the two PIDs identical, > and secondly, as they're not, why is the PID of the last background > process 1 greater than the current process PID of the subshell? The reason for the discrepancy is that the $$ and $! are interpreted by the parent shell (25654). the $! (25655) is the actual process id of the sub-shell. Apparently the entire subshell script is processed by the shell prior to passing it to the sub-shell. Changing the subshell to ( echo subshell - \$$ sleep 10 ) & gets you "subshell - $$" Using ( eval echo subshell - \$$ sleep 10 ) & gets the original output. If you need to have the correct $$ evaluation you could do something like the following: sh <<\endsh & echo subshell - $$ sleep 10 endsh echo subshell = $! echo shell = $$ Good luck. -- +-----------------------------------------------------------------------+ | Conor P. Cahill uunet!virtech!cpcahil 703-430-9247 ! | Virtual Technologies Inc., P. O. Box 876, Sterling, VA 22170 | +-----------------------------------------------------------------------+