【发布时间】:2017-06-09 21:34:28
【问题描述】:
我正在使用subprocess.Popen打开一个程序
import subprocess
prog = subprocess.Popen(['myprog', args], shell=True)
我想监视进程“myprog”并等待它终止,然后我的代码继续。
我面临的问题是prog.pid 是shell 的PID 而不是'myprog',我不知道如何获得'myprog' 的PID。我尝试使用psutil查找prog.pid的子进程:
parent = psutil.Process(prog.pid)children = parent.children(recursive=True)
但返回一个空列表。
不幸的是,没有外壳我无法启动“myprog”。当我使用shell=False 运行命令时,我收到以下错误消息:
FileNotFoundError: [WinError 2] The system cannot find the file specified
我在网上搜索了很多,但所有有希望的线索都是针对非 Windows 用户的。
【问题讨论】:
-
你确定你不能在没有shell的情况下制作你的程序吗?你能在你的问题中解释为什么吗?也许使用实际的命令行。因为这是可以修复的。
-
我正在尝试使用命令
atom path\to\file\to\open打开Atom -
你能输入
where atom吗?我们要去这里的某个地方。 -
是的,我可以。输出在 C:\Users\Username\AppData\Local\atom\bin 有 2 个文件
atom和atom.cmd
标签: python windows shell subprocess