ShortWindows以外的常用方法taskkill
是有力的。谢谢mob https://stackoverflow.com/users/168657/mob and 墨尔波梅内 https://stackoverflow.com/users/1848654/melpomene.
The Win32::进程 http://search.cpan.org/%7Ejdb/Win32-Process-0.16/Process.pm文档没有说明方法是什么Kill
or KillProcess
确实如此,但他们对此似乎很直率。 Windows 确实提供了如何终止进程的分级,例如参见这篇文章通过 winapi 优雅终止 https://stackoverflow.com/questions/2055753/how-to-gracefully-terminate-a-process,即使它没有 UNIX 信号。然而,这显然没有被模块使用,也没有被kill
(见末尾)。
Windows自带的taskkill
应该很好地要求进程终止。通过运行来查询标志taskkill /?
在系统的控制台中。这是文档MS technet 上的 taskkill https://technet.microsoft.com/en-us/library/bb491009.aspx。例如,这将通过其终止进程$pid
,以及它的孩子
my $pid = $ProcessObj->GetProcessID();
system("taskkill /t /pid $pid");
如果方法GetProcessID()
不会返回真实ID,其他方式请参见下面的链接。
我现在无法在 Windows 上进行测试。有更多相关细节这个帖子 https://stackoverflow.com/questions/36470043/perl-closing-pipe-without-error/36470817#36470817, 第二部分。
Perl's kill
在 Windows 上显然很强大。从perlport http://perldoc.perl.org/perlport.html#kill
... kill($sig, $pid)
终止由以下标识的进程$pid
,并使其立即退出并具有退出状态$sig
.
谢谢墨尔波梅内 https://stackoverflow.com/users/1848654/melpomene获取评论和文档链接。
The exitcode
我相信,仅告诉处理向系统报告的内容作为其退出。