में निष्पादित प्रक्रिया से पाइप तक stdin/stdout को रीडायरेक्ट करने के लिए मैं एक निष्पादित बाल प्रक्रिया से STDOUT/STDERR रखने की कोशिश कर रहा हूं, पेरल में एक पाइप के माध्यम से माता-पिता के पास वापस जाएं। सबसे नज़दीक मैंने देखा है कि मैं क्या करना चाहता हूं: http://forums.devshed.com/perl-programming-6/exec-and-redirecting-stdout-stderr-168501.htmlपर्ल
निम्नलिखित जो मैं करने की कोशिश कर रहा हूं उसका एक संक्षिप्त उदाहरण है। मैंने उपरोक्त लिंक का एक संस्करण भी आजमाया। मैं नहीं देख सकता कि मैं क्या गलत कर रहा हूं ...
#!/usr/bin/env perl
use strict ;
use warnings ;
my $cmd = "/usr/bin/who -a" ; # anything to stdout
pipe(READER, WRITER) ;
my $child = fork() ;
if ($child) {
print "I am the parent: My pid = $$ junior = $child\n" ;
close(WRITER) ;
my @output = <READER> ;
print @output ;
print "parent is DONE\n" ;
} else {
print "I am the child. My pid = $$\n" ;
close(READER) ;
close(STDOUT);
close(STDERR);
*STDOUT = *WRITER ;
*STDERR = *WRITER ;
print WRITER "XXX ouput before exec....\n" ;
exec($cmd) or exit(1) ;
}
आप [आईपीसी :: Open2] में रुचि हो सकती (http://perldoc.perl.org/IPC/Open2.html)। – squiguy