Tôi đang cố gắng để có STDOUT/STDERR từ một tiến trình con thực hiện quay trở lại với cha mẹ thông qua một đường ống trong Perl. Gần nhất tôi đã thấy những gì tôi muốn làm là tại: http://forums.devshed.com/perl-programming-6/exec-and-redirecting-stdout-stderr-168501.htmlchuyển hướng stdin/stdout từ quá trình exec'ed đến đường ống trong Perl
Sau đây là một ví dụ rút gọn về những gì tôi đang cố gắng làm. Tôi cũng đã thử một biến thể của liên kết ở trên. Tôi không thể thấy những gì tôi đang làm sai ...
#!/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) ;
}
Bạn có thể quan tâm đến [IPC :: Open2] (http://perldoc.perl.org/IPC/Open2.html). – squiguy