execed子プロセスからのSTDOUT/STDERRをPerlのパイプ経由で親プロセスに戻そうとしています。私がやりたいと思っていることに最も近いのは、次の場所です。 http://forums.devshed.com/perl-programming-6/exec-and-redirecting-stdout-stderr-168501.htmlexecdedプロセスからstdin/stdoutをPerlのパイプにリダイレクト
以下は、私がしようとしていることの例です。私はまた、上記のリンクの変形を試みました。私が間違っていることがわかりません...
#!/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) ;
}
あなたは、[IPC :: Open2(http://perldoc.perl.org/IPC/Open2.html)に興味があるかもしれません。 – squiguy