my $collect = 0;
while(($collect = waitpid(-1, WNOHANG)) > 0) {
$cur_live_proc--;
}
}
if ( ($cur_live_proc<$MAX_LIVE_PROC) and ($handled_task<$TOTAL_TASK) ) {
$handled_task++;
$cur_live_proc++;
my $pid = fork();
unless ($pid) {
my $filename = &getUniqueFilename();
push @result_filename, $filename;
system "./checkHost $IP[$handled_task-1] $uid $psw $filename";
exit 0;
}
} else {
next;
}
}
&checkResults();
小结
根据常见的设备系统测试自动化平台的特点和要求,把 Perl 的多进程技术应用到了测试脚本中,极大地提高了测试效率。
Perl 多进程已经很长的发展历史,而且应用广泛,技术成熟。多进程在健壮性和容错性方面表现更好,每个进程都拥有独立的内存空间,并行的几个进程一般来说不会相互干扰;当然,相应的,多进程的系统开销也比较大,而且进程间通信也变得复杂一些。妥善地处理多进程生成和进程间的通信,会很好地改善自动化测试的运行效率以及稳定性。
参考资料
参考 http://search.cpan.org/~nwclark/perl-5.8.9/lib/Thread.pm,了解 Perl 线程模型的简介和 5005threads 的用户接口函数。
参考 http://search.cpan.org/~aristotle/Proc-Fork-0.71/lib/Proc/Fork.pm,了解 Perl 的多进程使用。
参考 http://search.cpan.org/~pjcj/Gedcom-1.16/install/System.pm,了解 Perl 中执行一个系统命令或者运行一个程序的方法。
查看图书 Larry Wall, 《 Programming Perl 》 , 了解 Linux 平台 Perl 多进程的通信方法。
文章来源于领测软件测试网 https://www.ltesting.net/