This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Return codes and pipelines


On Sun, Jan 12, 2003 at 02:21:45PM -0800, Randall R Schulz wrote:
> Rolf,
> 
> One posting is enough, really.
> 
> There is no guaranteed or specified parent child relationship between the 
> processes in a pipeline. This means that you cannot predict which process's 
> status will be the one returned as that of the pipeline as a whole.
> 


> 
> At 14:09 2003-01-12, Rolf Campbell wrote:
> >/home/rcampbell> (true | true) && echo true || echo false
> >true
> >/home/rcampbell> (true | false) && echo true || echo false
> >false
> >/home/rcampbell> (false | true) && echo true || echo false
> >true
> >/home/rcampbell> (false | false) && echo true || echo false
> >false
> >
> >The third test above yields different results when run on Linux.  I'm
> >wondering if this was the desired result or not?


There is (or had been last I looked at the source) a defined relationship
in the Bourne and Korn shells at least.

The parent forks the last command in a pipeline which then becomes the
parent of the other commands in the pipeline.  Thus the original parent
only sees the last command's exit status.

This scheme was done to implement the following behavior back around
System V.2 in the great Bourne shell "rewrite in C".

>From the current Solaris man page for Bourne Shell:

       ...  .  Each  command  is  run  as a separate process; the
     shell waits for the last  command  to  terminate.  The  exit
     status  of a pipeline is the exit status of the last command
     in the pipeline.

The addition of the pipefail option to recent ksh93 versions suggests
this relation-ship scheme has been altered in those shells.  But I
do not think it appropriate to generically say there is no defined
relationship as if it applies to every shell out there.

-- 
Jon H. LaBadie                  jcyg@jgcomp.com
 JG Computing
 4455 Province Line Road        (609) 252-0159
 Princeton, NJ  08540-4322      (609) 683-7220 (fax)

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]