Skip site navigation (1)Skip section navigation (2)
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>