我正在开发一个脚本来对用多种语言(Perl、Java、R)编写的程序进行基准测试和比较,这些程序设计用于相同的目的。我需要同时运行两个子程序,一个用于使用 Unix TOP 命令,另一个用于执行程序。我正在尝试使用 Parallel::ForkManager。这是我用来分叉的代码:
sub parallelRun{
$commands[0]= sub{topExec};
$commands[1]= sub{masExec};
my $manager = new Parallel::ForkManager( 2 );
for($i=0; $i <= $#commands; $i++) {
$pid = $manager-> start and next;
push(@pid,$pid);
$commands[$i]();
$manager-> finish;
} # For End
$manager->wait_all_children;
$manager-> finish($pid[0]);
undef(@pid);
} # Sub End
完成后我需要完成topExec()
(TOP 执行)masExec()
,但是脚本在 TOP 命令之后挂起。
奖励问题:有没有办法让执行的程序的系统 pidmasExec()
在 TOP 命令中跟踪它?现在,我正在从 Unix Top 命令(sub topExec)中的用户和命令列进行跟踪。
抱歉有任何语言错误(两者都不是本地语言;))。