Die*_*rdk 9 perl winapi kill process
嗨我有这个进程树:
上面的屏幕截图显示了一个进程树.在我的Perl脚本中,我知道dscli的PID.我编写了以下代码来杀死单个PID:
use Win32::Process;
use strict;
use warnings;
if(defined($ARGV[0])){
my $pid = "$ARGV[0]";
my $exitcode = 0;
Win32::Process::KillProcess($pid, $exitcode);
}else{
print "No argument provided :(\n";
}
Run Code Online (Sandbox Code Playgroud)
问题是在我的脚本中我不知道java进程的PID.我必须得到dscli的子PID,这是java进程.如果我使用上面的代码杀死dscli的PID,那么子(java)不会死掉它.
所以我的问题是,如何使用perl杀死dscli的子进程java进程?
您可以使用Windows命令TASKKILL /T
终止进程及其子进程.
$pid = ...;
system("TASKKILL /F /T /PID $pid");
Run Code Online (Sandbox Code Playgroud)
可以使用PERL 中的 WMI。WMI 能够找到给定父进程的所有子进程的 PID。注意查询"select * from win32_process where ParentProcessId={0}"
。如果您有子 PID 列表,您可以调用Win32::Process::KillProcess
.