Подтвердить что ты не робот

Можно ли убить процесс в Windows из Python?

Я использую Python 2.6. Иногда возникает несколько случаев открытия определенного процесса, и этот процесс сам по себе вызывает некоторые проблемы. Я хочу, чтобы иметь возможность программно обнаруживать, что есть несколько экземпляров этого процесса и убивать их.

Например, возможно, в некоторых случаях открыто 50 экземпляров make.exe. Я хочу сказать, что открыто 20 экземпляров и убить их всех. Как это достигается?

4b9b3361

Ответ 1

Я думаю, вы могли бы просто использовать taskkill и Python os.system()

import os
os.system("taskkill /im make.exe")

Примечание. Я хотел бы отметить, что вам, возможно, придется полностью квалифицировать путь taskkill. Я использую ящик Linux, поэтому я не могу проверить...

Ответ 2

Вы можете использовать TerminateProcess win32 api, чтобы убить процесс. См. Следующий пример: http://code.activestate.com/recipes/347462-terminating-a-subprocess-on-windows/

Вам нужно дать ему дескриптор процесса. Если процесс запускается из вашего кода, дескриптор процесса возвращается CreateProcess или popen.

Если процесс был запущен чем-то другим, вам нужно получить этот дескриптор, который вы можете использовать EnumProcess или WMI, чтобы получить его.

Ответ 3

Как насчет этого, я протестировал его с помощью 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")

Ответ 4

Да, вы можете это сделать

import os
os.system("taskkill /f /im  Your_Process_Name.exe")

Ответ 5

Существует хорошая кросс-платформенная утилита python psutil, которая предоставляет kill() для процессов, которые могут быть перечислены в psutil.process_iter().

В другом потоке уже есть пример: fooobar.com/info/87129/...