freebsd-skq/bin/sh
Jilles Tjoelker 4f6e4215a0 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)
2009-06-23 21:50:06 +00:00
..
bltin Declare echocmd() and testcmd(). 2005-08-13 15:04:30 +00:00
funcs /*- or .\"- or #- to begin license clauses. 2005-01-10 08:39:26 +00:00
alias.c be more type correct and align local ckmalloc() with its underlying malloc(3) by using a "size_t" instead of an "int" argument 2009-06-01 10:50:17 +00:00
alias.h
arith_lex.l cvs -d stefanf@ncvs.FreeBSD.org:/home/ncvs 2005-08-13 07:54:23 +00:00
arith.h - Fix bugs where the value of arithmetic expansion$((...)) was trucated 2008-04-27 20:46:45 +00:00
arith.y - Fix bugs where the value of arithmetic expansion$((...)) was trucated 2008-04-27 20:46:45 +00:00
builtins.def Use -s to flag POSIX's "special built-in" utilities in builtins.def. Add a 2006-04-02 18:43:33 +00:00
cd.c Split updatepwd() into two smaller functions. The first one, findpwd(), 2008-02-24 16:50:55 +00:00
cd.h
error.c Remove some white space at EOL. 2006-02-04 14:37:50 +00:00
error.h
eval.c Do not fork for a subshell if it is the last thing this shell is doing 2009-06-23 21:50:06 +00:00
eval.h Avoid leaving unnecessary waiting shells in many forms of sh -c COMMAND. 2009-06-13 21:17:45 +00:00
exec.c align coding style with style(9) to avoid misunderstandings 2009-06-01 11:11:46 +00:00
exec.h Implement some of the differences between special built-ins and other builtins 2006-04-09 12:21:20 +00:00
expand.c Expand $LINENO to the current line number. This is required by SUSv3's "User 2008-05-15 19:55:27 +00:00
expand.h
histedit.c sh: Improve handling of setjmp/longjmp volatile: 2009-06-23 20:45:12 +00:00
init.h
input.c Properly flush input after an error in backquotes in interactive mode. 2009-06-17 21:58:32 +00:00
input.h Avoid leaving unnecessary waiting shells in many forms of sh -c COMMAND. 2009-06-13 21:17:45 +00:00
jobs.c Add the POSIX option -p to the jobs builtin command. It prints the PID of the 2006-10-07 16:51:16 +00:00
jobs.h Add the POSIX option -p to the jobs builtin command. It prints the PID of the 2006-10-07 16:51:16 +00:00
mail.c Include missing headers. 2005-08-13 08:26:58 +00:00
mail.h
main.c Avoid leaving unnecessary waiting shells in many forms of sh -c COMMAND. 2009-06-13 21:17:45 +00:00
main.h
Makefile Reduce the WARNS level to avoid a compiler warning about a variable 2007-11-18 01:53:07 +00:00
memalloc.c be more type correct and align local ckmalloc() with its underlying malloc(3) by using a "size_t" instead of an "int" argument 2009-06-01 10:50:17 +00:00
memalloc.h be more type correct and align local ckmalloc() with its underlying malloc(3) by using a "size_t" instead of an "int" argument 2009-06-01 10:50:17 +00:00
miscbltin.c Usermode portion of the support for swap allocation accounting: 2009-06-23 20:57:27 +00:00
mkbuiltins Use -s to flag POSIX's "special built-in" utilities in builtins.def. Add a 2006-04-02 18:43:33 +00:00
mkinit.c be more type correct and align local ckmalloc() with its underlying malloc(3) by using a "size_t" instead of an "int" argument 2009-06-01 10:50:17 +00:00
mknodes.c Mark functions as __dead2 in order to help the LLVM static checker 2008-08-04 01:25:48 +00:00
mksyntax.c use explicit 'unsigned int' instead of just the implicit-style 'unsigned' to make linting tools (e.g. FlexeLint) happy, too 2009-06-01 11:38:38 +00:00
mktokens /*- or .\"- or #- to begin license clauses. 2005-01-10 08:39:26 +00:00
myhistedit.h
mystring.c
mystring.h Remove clause 3 from the UCB licenses. 2004-04-06 20:06:54 +00:00
nodes.c.pat
nodetypes /*- or .\"- or #- to begin license clauses. 2005-01-10 08:39:26 +00:00
options.c Fix a bug in r177497 which caused the getopts state to be reset when 'set' 2008-08-27 20:16:06 +00:00
options.h
output.c Fix some issues with quoted output and shorten it in some cases. 2009-06-19 22:09:55 +00:00
output.h
parser.c sh: Improve handling of setjmp/longjmp volatile: 2009-06-23 20:45:12 +00:00
parser.h Expand $LINENO to the current line number. This is required by SUSv3's "User 2008-05-15 19:55:27 +00:00
redir.c Fix race condition in noclobber option. 2009-06-20 20:44:27 +00:00
redir.h
sh.1 Mention the range for the exit status for the exit special builtin. 2009-06-07 15:04:43 +00:00
shell.h - Fix bugs where the value of arithmetic expansion$((...)) was trucated 2008-04-27 20:46:45 +00:00
show.c Output something reasonable for regular and expanded here-documents. 2006-04-14 13:59:03 +00:00
show.h
TOUR Correct assorted grammos and typos. 2006-04-16 11:54:01 +00:00
trap.c Don't skip forking for an external command if any traps are active. 2009-06-13 21:10:41 +00:00
trap.h Don't skip forking for an external command if any traps are active. 2009-06-13 21:10:41 +00:00
var.c sh: Improve handling of setjmp/longjmp volatile: 2009-06-23 20:45:12 +00:00
var.h Implement the PS4 variable which is defined by the POSIX User Portability 2006-06-15 07:00:49 +00:00