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 [EMAIL PROTECTED] 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/