加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在ActiveState Perl中轻轻杀死进程?

发布时间:2020-12-16 06:21:12 所属栏目:大数据 来源:网络整理
导读:我需要使用特定的exitcode吗? Win32::Process::Create( $ProcessObj,"C:Program Files (x86)Mozilla Firefoxfirefox.exe","firefox -no-remote -P $prof_name",NORMAL_PRIORITY_CLASS,".")|| die ErrorReport();$ProcessObj-kill(0); 这样就可以杀死
我需要使用特定的exitcode吗?

Win32::Process::Create(
    $ProcessObj,"C:Program Files (x86)Mozilla Firefoxfirefox.exe","firefox -no-remote -P $prof_name",NORMAL_PRIORITY_CLASS,".")|| die ErrorReport();
$ProcessObj->kill(0);

这样就可以杀死它,但不是轻微的,它会导致Firefox配置文件出现问题.

解决方法

除了Window的taskkill之外的简短常用方法是有力的.感谢 mob和 melpomene.

Win32::Process文档没有说明Kill或KillProcess所做的方法,但他们似乎对此非常直率. Windows确实提供了如何终止进程的渐变,例如参见graceful termination via winapi上的这篇文章,即使它没有UNIX的信号.然而,这显然没有被模块使用,也没有被杀死(见最后).

Windows自己的taskkill应该很好地要求进程终止.通过运行taskkill /?查询标志.在您系统的控制台中.这是taskkill on MS technet的文档.例如,这将通过其$pid及其子项终止进程

my $pid = $ProcessObj->GetProcessID();
system("taskkill /t /pid $pid");

如果方法GetProcessID()未返回实际ID,请参阅下面的链接以了解其他方法.

我现在无法在Windows上测试. this post第二部分有更多相关细节.

在Windows上,Pe??rl的杀戮显然是有力的.从perlport

kill($sig,$pid) terminates the process identified by $pid,and makes it exit immediately with exit status $sig.

感谢melpomene的评论和文档链接.

我相信,exitcode只会告诉处理向系统报告的内容.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读