我正在尝试调用子进程,这是子进程:
def data_PID(pid):
print(pid)
pid = str(pid)
data = subprocess.getoutput("ps -l | grep pid ")
print(data)
PID是由控制台询问的,我想在subprocess.getoutput中搜索使用该PID的值,但我不知道该怎么做,例如,如果我在控制台中写入PID是4567,我想要子进程 “ps -l | grep 4567” 如果有人知道怎么做,我会感谢他。
答案 0 :(得分:1)
我同意@dbeer。如果你想在这里使用psutil示例:
import psutil
def get_process_by_pid(pid: int):
process = None
for p in psutil.process_iter():
if p.pid == pid:
process = p
break
return process
然后您可以使用process
对象并获取所有流程信息,如果您希望dict结构中的信息只需调用process.as_dict()
。
答案 1 :(得分:0)
通常,在API可用时使用子进程是个坏主意。 psutil模块可用于获取您正在寻找的信息。这样做要比启动单独的进程并解析输出要好得多,因为:
但是,要回答第一个问题,如果您只想将变量写入字符串:
cmd = "ps -l | grep %s" % (pid)
data = subprocess.getoutput(cmd)