перенаправление stdin / stdout из исполняемого процесса в pipe в Perl
Я пытаюсь заставить STDOUT / STDERR из исполняемого дочернего процесса вернуться к родителю через канал в Perl. Самое близкое, что я видел к тому, что я хочу сделать, это: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) ;
}