Para Windows
una manera de conseguir todos los PIDs de los programas en su ordenador sin necesidad de descargar módulos:
import os
pids = []
a = os.popen("tasklist").readlines()
for x in a:
try:
pids.append(int(x[29:34]))
except:
pass
for each in pids:
print(each)
si sólo quería un programa o todos los programas con el mismo nombre y que quería para matar el proceso o algo:
import os, sys, win32api
tasklistrl = os.popen("tasklist").readlines()
tasklistr = os.popen("tasklist").read()
print(tasklistr)
def kill(process):
process_exists_forsure = False
gotpid = False
for examine in tasklistrl:
if process == examine[0:len(process)]:
process_exists_forsure = True
if process_exists_forsure:
print("That process exists.")
else:
print("That process does not exist.")
raw_input()
sys.exit()
for getpid in tasklistrl:
if process == getpid[0:len(process)]:
pid = int(getpid[29:34])
gotpid = True
try:
handle = win32api.OpenProcess(1, False, pid)
win32api.TerminateProcess(handle, 0)
win32api.CloseHandle(handle)
print("Successfully killed process %s on pid %d." % (getpid[0:len(prompt)], pid))
except win32api.error as err:
print(err)
raw_input()
sys.exit()
if not gotpid:
print("Could not get process pid.")
raw_input()
sys.exit()
raw_input()
sys.exit()
prompt = raw_input("Which process would you like to kill? ")
kill(prompt)
eso fue sólo una pasta de mi programa de matar el proceso que podría hacerlo mucho mejor, pero está bien.
Si quieres trabajar cruz -plataforma (por ejemplo, igual de bien en Linux, Mac, Solaris, ...) no hay mejor manera de analizar la salida 'pf'. Si se trata de una única plataforma muy específica, edite su Q para agregar esa información obviamente crucial (las versiones exactas del sistema operativo a las que debe apuntar) * y * ¡también la etiqueta! –
Puede analizar la salida del ps directamente en python – Mark