Windows上的子进程PID

问题描述 投票:0回答:1

如何获得Windows OS上用shell = True打开的子进程的PID?我试图使用for循环以这种方式运行几个命令,将它们作为参数-它们的运行正常。但是,从procName.pid返回的PID与任务列表PID不匹配。例如:

pidDict = {}
for proc in argsPassed:
    p = subprocess.Popen(proc, shell=True)
    pidDict[proc] = p.pid

pidDict与任务列表中我的进程的PID进行比较,甚至不匹配。我需要跟踪这些,以便以后将其杀死。有什么建议吗?谢谢。

python python-3.x windows subprocess
1个回答
0
投票

我设法做到了这一点,但是只有当您知道在脚本运行时不会打开其他使用相同映像名的进程时,此方法才能起作用。就我而言,这还可以,因为我正在寻找q.exe进程,并且它仅在本地计算机上。起作用的代码:

pidDict = {}
for proc in argsPassed:
     subprocess.Popen(proc, shell=True)
     time.sleep(1)
     p_list = subprocess.Popen(‘tasklist.exe /fo csv’, stdout=subprocess.PIPE, universal_newlines=True)

     for p in csv.DictReader(p_list.stdout):
          if (p[‘Image Name’] == ‘q.exe’) and (p[‘PID’] not in pidDict.values()):
              pidDict[i] = p[‘PID’]
© www.soinside.com 2019 - 2024. All rights reserved.