automake-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

avoiding forks in shell scripts (was: [PATCH] Modernize, improve and/or


From: Ralf Wildenhues
Subject: avoiding forks in shell scripts (was: [PATCH] Modernize, improve and/or extend tests `colon*.test.)
Date: Sun, 8 Aug 2010 19:28:28 +0200
User-agent: Mutt/1.5.20 (2010-04-22)

* Stefano Lattarini wrote on Sun, Aug 08, 2010 at 07:09:46PM CEST:
> At Sunday 08 August 2010, Ralf Wildenhues wrote:
> > * Stefano Lattarini wrote on Sun, Aug 08, 2010 at 06:22:00PM CEST:
> > > Exactly! So:
> > >   foo() { foo_result=`sed ...`; }
> > >   foo; bar=$foo_result;
> > > 
> > > instead of:
> > >   foo() { sed ...; }
> > >   bar=`foo`
> > > 
> > > Where is the significant improvement?
> > 
> > Two forks vs. one: the latter still forks right before exec'ing
> > sed.
> And the first doesn't?

For some shells, that is correct.

Your questioning prompted me to try it out, to make sure I'm not telling
anything wrong here.  So, with bash 3.2.39 on GNU/Linux, the first of
the scripts below calls clone once, the second twice, as strace -fF
tells me.

Cheers,
Ralf

--- script 1 ---
#! /bin/sh
foo () { result=`sed -n 1p $0`; }
foo
echo $result


--- script 2 ---
#! /bin/sh
foo () { sed -n 1p $0; }
result=`foo`
echo $result



reply via email to

[Prev in Thread] Current Thread [Next in Thread]