簡體   English   中英

如何在ActiveState Perl中輕輕殺死進程?

[英]How can I gently kill a process in ActiveState Perl?

我需要使用特定的exitcode嗎?

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配置文件出現問題。

除了Window的taskkill之外的簡短常用方法是有力的。 感謝暴徒melpomene


Win32::Process文檔沒有說明KillKillProcess所做的方法,但它們看起來相當直率。 Windows確實提供了如何終止進程的漸變,例如, 通過winapi查看關於正常終止的帖子,即使它沒有UNIX的信號。 然而,這顯然沒有被模塊使用,也沒有被kill (見最后)。

Windows自己的taskkill應該很好地要求進程終止。 通過運行taskkill /?查詢標志taskkill /? 在您系統的控制台中。 這是taskkill on MS technet文檔。 例如,這會通過$pid及其子項終止進程

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

如果方法GetProcessID()未返回實際ID,請參閱下面的鏈接以了解其他方法。

我現在無法在Windows上測試。 this post有更多相關細節,第二部分。


在Windows上,Pe​​rl的kill顯然是有力的。 來自perlport

... kill($sig, $pid)終止由標識的進程$pid ,並使其與退出狀態立即退出$sig

感謝melpomene的評論和文檔鏈接。

我相信, exitcode只會告訴處理向系統報告的內容。

據我所知,在Perl你可以做到

kill -15 (pid)

誰輕輕地殺死了perl中的進程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM