一个简单的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;
}
}
#!/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;
}
}
相关文章推荐
- 用perl脚本实现一个简单的行注释到块注释的转换
- 用一个简单的perl包轻松管理脚本中的软件调用
- 【转】一个简单的多线程即时通讯程序(类似QQ,MSN)
- 用 Java 实现一个简单的多线程 web 服务器
- 【多线程】一个简单的线程池Demo
- 一个简单的中英文翻译脚本
- qt多线程一个简单的例子
- 简单perl脚本
- 用capistrano写一个简单的deploy脚本
- C#实现一个简单的多线程IP或端口扫描器
- MySQL备份脚本的一个简单小脚本
- 一个关于多线程的简单实例(抄书)
- 自己写了一个perl脚本检测redis(nagios插件)
- Perl 脚本简单应用实例-MySQL备份
- Perl多进程与多线程简单示例
- ps_mem:一个用于精确报告 Linux 核心内存用量的简单 Python 脚本
- 编写一个简单的SHELL脚本
- 写一个简单的python脚本来返回ip地址的掩码,子网个数等
- C++实现的一个简单的多线程程序
- 一个简单多线程爬虫的实现