我在perl中编写一个函数,它会在给定PID的情况下终止进程。
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
不存在。
我得到的是:
PID = 1234
Return Code = 0
Perl Doc说,ExitCode
将由进程返回的退出代码填充。然后ExitCode
应为1
。
我做错了吗?
答案 0 :(得分:0)
问题是您使用require
代替use
来加载模块。有时这没关系,但您应该始终遵循模块文档中的示例。
您还必须总是 use strict
和use warnings
位于您编写的每个Perl程序的顶部。这将使您有必要声明所有变量,这些变量应尽可能接近其第一个使用点。这些措施将揭示您可能忽略的许多错误,并且在您向其他人寻求代码帮助时尤为重要。
答案 1 :(得分:0)