From: "Mark E." To: djgpp-workers AT delorie DOT com Date: Thu, 22 Mar 2001 13:19:09 -0500 MIME-Version: 1.0 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7BIT Subject: Re: pipe() emulation Message-ID: <3AB9FBCD.21158.622AC9@localhost> References: <3AB9425B DOT 11812 DOT 36ACFC AT localhost> In-reply-to: X-mailer: Pegasus Mail for Win32 (v3.12c) Reply-To: djgpp-workers AT delorie DOT com > How is this supposed to be used? Could you give an example of a > real-life usage in Bash? pipe() is used by the command substitution and pipeline portions of Bash. In the case of command substituion, Bash essentially does this: pipe(fildes) dup2(fildes[1], 1) /* write end of pipe now stdout */ /* perform command */ /* read command output from read end of pipe */ Pipelines such as 'a | b' are more complicated: pipe(fildes1) dup2(fildes1[1], 1) /* Write end of pipe 1 is now stdout */ /* run 'a' */ dup2(fildes1[0], 0) /* Read in of pipe 1 is now stdin */ close(fildes1[1]) /* Done with write end of pipe 1*/ /* run 'b' */ close(fildes1[0]) /* Done with read end of pipe 1 */