如何在 ActiveState Perl 中温和地终止进程?

2024-03-14

我需要使用特定的退出代码吗?

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 配置文件的问题。


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我相信,仅告诉处理向系统报告的内容作为其退出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ActiveState Perl 中温和地终止进程? 的相关文章

随机推荐