Python 2.6を使用しています。特定のプロセスの複数のインスタンスが開かれることがあり、そのプロセス自体にいくつかの問題が発生します。そのプロセスの複数のインスタンスがあることをプログラムで検出し、それらを強制終了できるようにしたいと思います。
たとえば、場合によっては、make.exeのインスタンスが50個開いていることがあります。 20個のインスタンスが開いていることを通知し、それらをすべて強制終了できるようにしたいと考えています。これはどのように達成されますか?
taskkill とPython os.system()
import os
os.system("taskkill /im make.exe")
注:タスクキルパスを完全に修飾する必要がある場合があることに注意してください。 Linuxボックスを使用しているため、テストできません...
はい、できます
import os
os.system("taskkill /f /im Your_Process_Name.exe")
Nice cross-platform python utility psutil は、psutilでリストできるプロセスで kill() ルーチンを公開します。 process_iter()。
他のスレッドにはすでに例があります: https://stackoverflow.com/a/4230226/4571444
Win32 APIのTerminateProcess
を使用して、プロセスを強制終了できます。次の例を参照してください。 http://code.activestate.com/recipes/347462-terminating-a-subprocess-on-windows/
プロセスハンドルを指定する必要があります。プロセスがコードから開始される場合、プロセスハンドルはCreateProcessまたはpopenによって返されます。
プロセスが他の何かによって開始された場合、このハンドルを取得する必要があります EnumProcess または [〜#〜] wmi [〜#〜] を使用して取得できます。
これについては、ActiveState Python 2.7:
import sys, traceback, os
def pkill (process_name):
try:
killed = os.system('tskill ' + process_name)
except Exception, e:
killed = 0
return killed
で呼び出す:
pkill("program_name")