import os, subprocess
p = subprocess.Popen("cmd.exe", stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
print>>p.stdin, "echo hi"
p.stdout.readline()
p.stdout.readline()
p.stdout.readline()
p.stdout.readline()
p.stdout.readline()
p.stdout.readline()
print>>p.stdin, "python"
p.stdout.readline()
现在,如果我p.stdout.readline()
,为什么我看不到python shell?
另一方面,如果我从子进程启动了另一个python
而不是cmd
,我可以看到一个新的cmd
shell生成。
import os, subprocess
p = subprocess.Popen("cmd.exe", stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
print>>p.stdin, "echo hi"
p.stdout.readline()
p.stdout.readline()
p.stdout.readline()
p.stdout.readline()
p.stdout.readline()
p.stdout.readline()
print>>p.stdin, "cmd"
p.stdout.readline()
p.stdout.readline()
p.stdout.readline()
有什么区别?
答案 0 :(得分:0)
当标准输出不是终端设备时,Python的行为会有所不同:没有提示,没有横幅,它只是读取完整的脚本并执行它。
我不确切知道它是如何移植到Windows的,但“控制台句柄”是他们所拥有的“终端设备”的关闭。