Date: Sat, 28 Oct 2000 09:25:28 +0200 From: "Eli Zaretskii" Sender: halo1 AT zahav DOT net DOT il To: "Peter J. Farley III" Message-Id: <9003-Sat28Oct2000092528+0200-eliz@is.elta.co.il> X-Mailer: Emacs 20.6 (via feedmail 8.3.emacs20_6 I) and Blat ver 1.8.5h CC: djgpp-workers AT delorie DOT com In-reply-to: <4.3.1.0.20001027192402.00b199b0@pop5.banet.net> (pjfarley AT banet DOT net) Subject: Re: Bash 2.04 beta 6a References: <200010270805 DOT KAA00023 AT lws256 DOT lu DOT erisoft DOT se> <200010270805 DOT KAA00023 AT lws256 DOT lu DOT erisoft DOT se> <4 DOT 3 DOT 1 DOT 0 DOT 20001027192402 DOT 00b199b0 AT pop5 DOT banet DOT net> Reply-To: djgpp-workers AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp-workers AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk > Date: Fri, 27 Oct 2000 19:33:02 -0400 > From: "Peter J. Farley III" > > BTW, the DJGPP perl "popen"/"pclose" wrapper/substitutes that Laszlo > pointed me to use system() exclusively for the command execution, both > for read and write pipes. But the wrapper also uses dup/dup2 on stdout > (for read pipes) or stdin (for write pipes) around the calls to > system(). Note that popen/pclose from our libc also redirect handles with dup/dup2 and call system() to run the subsidiary program. > So DJGPP perl is using strictly system(), and now I need to > find out what perl uses elsewhere. And maybe what a *ix popen/pclose > really use. I'd expect a Unix system to do this inside popen: call pipe() to open a pipe call fork() to start the child program in the child-program's branch of fork, call exec("sh -c 'command-line'") in the parent-program's branch, read and write the pipe when wait() says the child exited, close the pipes and cleanup