Ответ 1
В Linux вы можете прочитать файловую систему proc. Файл /proc/<pid>/cmdline
содержит командную строку.
Это должно быть просто, но я просто этого не вижу.
Если у меня есть идентификатор процесса, как я могу его использовать, чтобы получить информацию о процессе, например имя процесса.
В Linux вы можете прочитать файловую систему proc. Файл /proc/<pid>/cmdline
содержит командную строку.
Попробуйте PSUtil → https://github.com/giampaolo/psutil
Хорошо работает в Windows и Unix, я помню.
Для Windows
A Способ получения всех программ на вашем компьютере без загрузки каких-либо модулей:
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)
Если вам просто нужна одна программа или все программы с тем же именем, и вы хотите убить процесс или что-то еще:
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)
Это была всего лишь паста моей программы для уничтожения процесса. Я мог бы сделать ее намного лучше, но все в порядке.
Попробуйте это
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