我正在写一个perl函数,它会在给定PID的情况下终止一个进程。Win32 :: Process :: KillProcess没有返回正确的退出代码
sub ShutPidForWindows()
{
require Win32::Process;
$PID = 1234;
$count = 0;
$ReturnStatus = 0;
$ExitCode = 0 ;
if ($PID == 0)
{
return ($ReturnStatus);
}
Win32::Process::KillProcess($PID, $ExitCode);
print "PID = ".$PID."\n";
print "Return Code = ".$ExitCode."\n";
if ($ExitCode)
{
$ReturnStatus = 1;
}
else
{
$ReturnStatus = 2;
}
return ($ReturnStatus);
}
当函数执行它
总是返回2
。尽管过程1234
不存在。
的O/P我得到的是:
PID = 1234
Return Code = 0
的Perl文件说,ExitCode
将由进程返回的退出代码来填充。那么ExitCode
应该是1
。
我做错了什么?
如果进程不存在,为什么你认为退出代码应该是'1'?如果没有进程,那么退出代码就不会有问题,'$ ExitCode'的值是无关紧要的。 – Borodin
@Borodin即使进程存在,ExitCode也不会改变。如果我初始化ExitCode来说-1,它在KillProcess之后仍然是-1(即使进程存在)。我看到的是KillProcess没有返回正确的ExitCodes。 – user1987769
始终使用'use strict;使用警告;'在你的Perl代码中。当传递参数给一个函数时,以这种方式接收'my($ arg1,$ arg2,@garbage)= @ _'; –