您的位置:首页 > 其它

一个简单的Perl多线程脚本

2008-07-28 11:29 211 查看
===============================

#!/usr/bin/perl -w

use strict;

our $max_child = 20;

$|=1;

my $grp_pid = getpgrp();

foreach my $item (1..80){

my $p_count = `ps -ef|grep ${grp_pid}|grep -v grep|wc -l`;

while ($p_count >= $max_child) {
print "达到最大进程数,休息一下!/n";
$p_count = `ps -ef|grep ${grp_pid}|grep -v grep|wc -l`;
chomp $p_count;
print "/$p_count=${p_count}/n";

last if ($p_count < $max_child);

select undef,undef,undef,0.1; #让系统休息0.1秒
}

if (my $child_pid=fork()){
print "开始启动子进程:$child_pid/n";
}
else{
print "挂起进程第:$item/n";
print "当前子进程PID为:$$;父进程PID为:",getppid(),";进程组ID为:",$grp_pid,"/n";
sleep 60;
exit 1;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: