Python 获取shell=True的子进程的子进程

Python 获取shell=True的子进程的子进程,python,python-2.7,cmd,subprocess,psutil,Python,Python 2.7,Cmd,Subprocess,Psutil,我正在尝试从脚本启动新的命令行,例如: p = subprocess.Popen('start cmd /c "C:\\Program Files\\Redis\\redis-server.exe"', shell=True) 然后让孩子们使用: p2 = psutil.Process(pid) children = p2.children() 然而,在我能够这样做之前,调用shell创建我的cmd并启动服务器的进程会自动终止(p2进程)。因此我无法访问它的孩子 有没有其他方法可以访问生成的

我正在尝试从脚本启动新的命令行,例如:

p = subprocess.Popen('start cmd /c "C:\\Program Files\\Redis\\redis-server.exe"', shell=True)
然后让孩子们使用:

p2 = psutil.Process(pid)
children = p2.children()
然而,在我能够这样做之前,调用shell创建我的cmd并启动服务器的进程会自动终止(p2进程)。因此我无法访问它的孩子

有没有其他方法可以访问生成的子进程,或者阻止shell进程自行终止


如果我尝试用shell=False启动新cmd,我会得到“WindowsError:[错误2]系统找不到指定的文件”

没有start.exe。这是cmdshell的内部命令。您可以直接执行“C:\Program Files\Redis\Redis server.exe”,默认值为
shell=False
。如果您需要一个新的控制台,请通过
creationflags=CREATE\u new\u console
请求一个。谢谢@eryksun,这个简单的解决方案有效。没有start.exe。这是cmdshell的内部命令。您可以直接执行“C:\Program Files\Redis\Redis server.exe”,默认值为
shell=False
。如果您需要一个新的控制台,请通过
creationflags=CREATE\u new\u console
请求一个。谢谢@eryksun,这个简单的解决方案很有效。