Date: Tue, 23 Jun 2009 21:50:06 +0000 (UTC) From: Jilles Tjoelker <jilles@FreeBSD.org> To: cvs-src-old@freebsd.org Subject: cvs commit: src/bin/sh eval.c Message-ID: <200906232150.n5NLoQLX074888@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
jilles 2009-06-23 21:50:06 UTC
FreeBSD src repository
Modified files:
bin/sh eval.c
Log:
SVN rev 194774 on 2009-06-23 21:50:06Z by jilles
Do not fork for a subshell if it is the last thing this shell is doing
(EV_EXIT). The fork is still done as normal if any traps are active.
In many cases, the fork can be avoided even without this change by using {}
instead of (), but in practice many scripts use (), likely because the
syntax is simpler.
Example:
sh -c '(/bin/sleep 10)& sleep 1;ps -p $! -o comm='
Now prints "sleep" instead of "sh". $! is more useful this way.
Most shells (dash, bash, pdksh, ksh93, zsh) seem to print "sleep" for this.
Example:
sh -c '( ( ( (ps jT))))'
Now shows no waiting shell processes instead of four.
Most shells (dash, bash, pdksh, ksh93, zsh) seem to show zero or one.
PR: bin/74404
Approved by: ed (mentor) (implicit)
Revision Changes Path
1.63 +2 -2 src/bin/sh/eval.c
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906232150.n5NLoQLX074888>
