我的目标是:
CREATE_NEW_CONSOLE
标志的subprocess.Popen()
创建一个新的python控制台。在在我的Windows10笔记本电脑上,我可以让它正常工作,但是在我的Windows7桌面上,由于creationflags=CREATE_NEW_CONSOLE
,这个过程失败了
我还尝试删除creationflags=CREATE_NEW_CONSOLE
并在参数中添加shell=True
。这没用。在
在脚本.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('');
当我运行这个“脚本.py,”快速打开和关闭新控制台。程序在某个时候崩溃了。原始控制台保持打开状态:
raw_input('');
阻止它关闭。在
我还尝试了try:
和except:
来防止新进程崩溃,但是只创建了一个不做任何事情的空白控制台。
我做了很多研究,但我发现没有什么能解决这个问题。在
更新***我更新到Python 2.7.15,然后继续确定问题。
我发现sys.stdout.flush();
抛出了一个[Errno 9]错误的文件描述符,因为系统标准输出有点腐败。
我的主要问题是“如何在subprocess.Popen()
中保留stdout,这样新的控制台窗口就可以打印到它自己而不必重定向stdout在
任何帮助将不胜感激!在
目前没有回答
相关问题 更多 >
编程相关推荐