Cela devrait être simple, mais je ne le vois tout simplement pas.
Si j'ai un ID de processus, comment puis-je l'utiliser pour récupérer des informations sur le processus, telles que le nom du processus.
Sous Linux, vous pouvez lire le système de fichiers proc. Le fichier /proc/<pid>/cmdline
contient la ligne de commande.
Essayez PSUtil -> https://github.com/giampaolo/psutil
Fonctionne bien sous Windows et Unix, je me souviens.
Pour les fenêtres
Une façon d'obtenir toutes les informations sur les programmes sur votre ordinateur sans télécharger de module:
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 vous vouliez seulement un programme ou tous les programmes du même nom et que vous vouliez arrêter le processus ou quelque chose du genre:
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)
C’était juste une pâte de mon programme de suppression de processus, je pouvais le rendre beaucoup mieux, mais c’est correct.
En utilisant psutil, voici le code le plus simple que je puisse vous donner:
import psutil
# The PID ID of the process needed
pid_id = 1216
# Informations of the Process with the PID ID
process_pid = psutil.Process(pid_id)
print(process_pid)
# Gives You PID ID, name and started date
# psutil.Process(pid=1216, name='ATKOSD2.exe', started='21:38:05')
# Name of the process
process_name = process_pid.name()
Essaye ça
def filter_non_printable(str):
ret=""
for c in str:
if ord(c) > 31 or ord(c) == 9:
ret += c
else:
ret += " "
return ret
#
# Get /proc/<cpu>/cmdline information
#
def pid_name(self, pid):
try:
with open(os.path.join('/proc/', pid, 'cmdline'), 'r') as pidfile:
return filter_non_printable(pidfile.readline())
except Exception:
pass
return