以下是我问题的简化示例。在这里,
问题
有没有办法让
exec
应该会报错,因为xecho
不存在。问题
有没有办法让
Capture::Tiny
捕获Parallel::ForkManager
的输出?#!/usr/bin/perl
use strict;
use warnings;
use Parallel::ForkManager;
use Capture::Tiny 'capture';
my ($stdout, $stderr, $exit) = capture {
my $pm = Parallel::ForkManager->new(5);
my $pid = $pm->start;
if (!$pid) {
no warnings; # no warnings "exec" is not working
exec("xecho test");
$pm->finish;
}
};
print "$stdout\n";
print "$exit\n";
print "$stderr\n";
parallel::ForkManager
时没有任何输出。如果将其删除,则会在$stderr
中输出file not found
,这正是我想要的。我的确切情况是启动ssh
来执行远程命令。我以为我正在等待子进程完成。但如果我没有等待,那么它就可以解释我另一个问题 =)如何让它等待子进程完成? - Jasmine Lognnes