Can*_*pus 2 windows perl process
使用Perl,如何检查特定的Windows进程是否正在运行?基本上,我想使用'exec'启动一个进程,但是只有当它还没有运行时我才应该这样做.
那么如何知道具有特定名称的进程是否正在运行?有没有提供此功能的Perl模块?
看一下使用Win32 :: OLE模块的以下示例.它允许您搜索名称与给定正则表达式匹配的正在运行的进程.
#! perl
use warnings;
use strict;
use Win32::OLE qw(in);
sub matching_processes {
my($pattern) = @_;
my $objWMI = Win32::OLE->GetObject('winmgmts://./root/cimv2');
my $procs = $objWMI->InstancesOf('Win32_Process');
my @hits;
foreach my $p (in $procs) {
push @hits => [ $p->Name, $p->ProcessID ]
if $p->Name =~ /$pattern/;
}
wantarray ? @hits : \@hits;
}
print $_->[0], "\n" for matching_processes qr/^/;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8709 次 |
| 最近记录: |