これは単純なはずですが、私はそれを見ていません。
プロセスIDを持っている場合、それを使用してプロセス名などのプロセスに関する情報を取得するにはどうすればよいですか。
Linuxでは、procファイルシステムを読み取ることができます。ファイル/proc/<pid>/cmdline
にはコマンドラインが含まれています。
PSUtilを試してください-> https://github.com/giampaolo/psutil
WindowsとUnixで問題なく動作することを思い出します。
Windowsの場合
モジュールをダウンロードせずに、コンピューター上のプログラムのすべてのpidを取得する方法:
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)
1つのプログラムまたは同じ名前のすべてのプログラムが必要で、プロセスなどを強制終了したい場合:
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)
それは私のプロセスキルプログラムの単なるペーストでした。私はそれをずっと良くすることができましたが、それは大丈夫です。
Psutilを使用して、これが私があなたに与えることができる最も簡単なコードです:
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()
これを試して
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