Er det muligt at dræbe en proces på Windows fra Python?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger Python 2.6 . Sommetider bliver der flere forekomster af en bestemt proces åben, og denne proces forårsager nogle problemer i sig selv. Jeg vil være i stand til programatisk at opdage, at der er flere forekomster af den proces og at dræbe dem.


For eksempel er der måske nogle gange 50 eksemplarer af make.exe åbne. Jeg vil gerne kunne fortælle, at der er 20 tilfælde åbne og at dræbe dem alle. Hvordan er dette opnået?

Bedste reference


Jeg tror, ​​du kunne bare bruge taskkill og Python os.system () [6] [7]


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





Bemærk: Jeg vil bare bemærke, at du måske skal kvalificere taskkill-banen fuldt ud. Jeg bruger en Linux-boks, så jeg kan ikke teste ...

Andre referencer 1


Ja, du kan gøre det


import os
os.system("taskkill /f /im  Your\_Process\_Name.exe")



  1. /f: Angiver, at processen (erne) skal afsluttes kraftigt.

  2. /im (ImageName): Angiver billednavn for processen, der skal være
    afsluttes.

  3. For mere information vedrørende TaskKill


Andre referencer 2


Du kan bruge TerminateProcess af win32 api til at dræbe en proces. Se følgende eksempel: http://code.activestate.com/recipes/347462-terminating-a-subprocess-on-windows/[8][9]


Du skal give det et proceshåndtag. Hvis processen starter fra din kode, returneres proceshåndtaget af CreateProcess eller popen.


Hvis processen blev startet af noget andet, skal du få dette håndtag, du kan bruge EnumProcess eller WMI til at hente det. [10] [11]

Andre referencer 3


Der er en flot python-hjælpeprogram for python psutil, der afslører en kill () rutine på processer, der kan listes med psutil.process\_iter (). [12] [13]


Der er allerede et eksempel i den anden tråd: https://stackoverflow.com/a/4230226/4571444

Andre referencer 4


Hvad med det her testede jeg det med 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


kalder det med:


pkill("program\_name")