【发布时间】:2013-05-29 04:14:16
【问题描述】:
我正在开发一个脚本来对用多种语言(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
当masExec() 完成时,我需要完成topExec()(TOP 执行),但是脚本在 TOP 命令之后挂起。
额外问题:有没有办法让在masExec() 中执行的程序的系统 pid 以在 TOP 命令中跟踪它?现在,我正在从 Unix Top 命令(sub topExec)中的用户和命令列进行跟踪。
抱歉有任何语言错误(非本地语言;))。
【问题讨论】:
标签: perl parallel-processing fork