当通过参数传递参数时,在Python中调用子过程



我正在尝试调用子过程,这是子过程:

def data_PID(pid):
   print(pid)
   pid = str(pid)
   data = subprocess.getoutput("ps -l | grep pid ")
   print(data)

PID是由控制台问的,我想在子过程中搜索使用该PID的值。getOutput,但我不知道该怎么做4567,我希望子进程制作" PS -L | GREP 4567"如果有人知道该怎么做,我将感谢他。

我同意@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对象并获取所有过程信息,如果您想要DICE结构中的信息,请致电process.as_dict()

通常,当可用API时使用子过程是一个坏主意。PSUTIL模块可用于获取您要寻找的信息。这样做比启动单独的过程并解析输出要好得多,因为:

  1. 它可以节省您的解析逻辑,通常很难维护。
  2. 它可以避免通过启动另一个过程引入故障的其他可能性。
  3. 它更快。

但是,要回答您的第一个问题,如果您只想将一个变量写入字符串:

cmd = "ps -l | grep %s" % (pid)
data = subprocess.getoutput(cmd)

最新更新