我是否需要使用特定的exitcode? p>
Win32::Process::Create(
$ProcessObj,
"C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe",
"firefox -no-remote -P $prof_name",
0,
NORMAL_PRIORITY_CLASS,
".")|| die ErrorReport();
$ProcessObj->kill(0);
这样就可以杀死,但不是轻微的,它会导致Firefox配置文件出现问题。
答案 0 :(得分:5)
简短 Window taskkill
以外的常用方法很有用。感谢mob和melpomene。
Win32::Process
文档没有说明方法Kill
或KillProcess
的用途,但他们似乎对此非常直率。 Windows确实提供了如何终止进程的渐变,例如参见graceful termination via winapi上的这篇文章,即使它没有UNIX的信号。但是,模块或kill
显然没有使用它(见结束)。
Windows自己的taskkill
应该很好地要求进程终止。通过在系统的控制台中运行taskkill /?
来查询标志。以下是taskkill on MS technet
的文档。例如,这会通过其$pid
及其子项
my $pid = $ProcessObj->GetProcessID();
system("taskkill /t /pid $pid");
如果方法GetProcessID()
没有返回真实ID,请参阅以下链接了解其他方法。
我现在无法在Windows上测试。 this post
中有更多相关细节,第二部分。
Perl的kill
在Windows上显然是有力的。来自perlport
...
kill($sig, $pid)
终止$pid
标识的流程,并立即退出退出状态$sig
。
感谢melpomene提供评论和文档链接。
我认为,exitcode
只会告诉处理系统退出时要报告的内容。
答案 1 :(得分:0)
据我所知,在Perl你可以做到
kill -15 (pid)
谁轻轻地杀死了perl的进程