Python 2.7.10 Windows 7和subprocess.CREATE_NEW_CONSOLE标志与Popen stdin.write();不工作

时间:2015-11-17 00:20:08

标签: python subprocess stdout stdin popen

这是我的目标:

  • 使用带有subprocess.Popen()标记的CREATE_NEW_CONSOLE创建 new python控制台。
  • 写入stdin并将其打印到新控制台。

在我的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 ?”

非常感谢任何帮助!

0 个答案:

没有答案