这是我的目标:
subprocess.Popen()
标记的CREATE_NEW_CONSOLE
创建 new python控制台。在我的Windows 10笔记本电脑上我能够正常工作,但是,在我的Windows 7桌面上,由于creationflags=CREATE_NEW_CONSOLE
,该过程失败了
我还尝试删除creationflags=CREATE_NEW_CONSOLE
并在参数中添加shell=True
。这没有做任何事情。
Script.py:
CODE="""
import sys;
while 1:
sys.stdout.write(sys.stdin.readline());
sys.stdout.flush();
""";
def Process():
return Popen([sys.executable,'-c',CODE],stdin=PIPE,bufsize=1,universal_newlines=True,creationflags=CREATE_NEW_CONSOLE);
p=Process();
p.stdin.write('Hello World\n');
p.stdin.flush();
raw_input('');
当我运行此“script.py”时,会快速打开并关闭一个新控制台。该程序在某些时候崩溃了。原始控制台保持打开状态:
raw_input('');
阻止其关闭。
我还尝试try:
和except:
来阻止新进程崩溃,而只是创建一个不执行任何操作的空白控制台。
我做了很多研究,没有什么可以解决我找到的这个问题。
更新***我更新到Python 2.7.15,然后继续确定问题。
我发现sys.stdout.flush();
抛出 [Errno 9]错误文件描述符错误,因为 sys.stdout 在某种程度上已损坏。
我的主要问题是“如何在subprocess.Popen()
中保留 stdout ,以便新的控制台窗口可以打印到自身而不重定向 stdout ?”
非常感谢任何帮助!