通过PID获取进程名称
这应该很简单,但我就是想不明白。
如果我有一个进程ID,我该怎么用它来获取关于这个进程的信息,比如进程的名称。
5 个回答
3
对于Windows系统
这里有一个方法,可以在你的电脑上获取所有程序的进程ID,而不需要下载任何模块:
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)
如果你只想获取一个程序的进程ID,或者想获取所有同名程序的进程ID,并且想要结束这些进程或者做其他操作:
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)
这只是我用来结束进程的程序的代码,我可以把它做得更好,但现在这样也可以。
15
试试 PSUtil -> https://github.com/giampaolo/psutil
我记得它在 Windows 和 Unix 系统上都能很好地工作。
20
在Linux系统中,你可以查看一个叫做proc的文件系统。文件/proc/<pid>/cmdline
里面记录了某个进程的命令行信息。