如何获得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进行比较,甚至不匹配。我需要跟踪这些,以便以后将其杀死。有什么建议吗?谢谢。
我设法做到了这一点,但是只有当您知道在脚本运行时不会打开其他使用相同映像名的进程时,此方法才能起作用。就我而言,这还可以,因为我正在寻找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’]