为同一进程创建新控制台

时间:2014-11-05 15:40:29

标签: python

我试图了解如何创建一个新的控制台来打印东西,也就是说,有多个标准输出可用。 在阅读了一些问题后,我才设法做到了这一点:

from subprocess import Popen, CREATE_NEW_CONSOLE
handle = Popen("cmd", stdin=PIPE, creationflags=CREATE_NEW_CONSOLE)
i.write(b'hello')

但是消息没有显示在新控制台上。

我有什么选择?

1 个答案:

答案 0 :(得分:1)

Altough我没有找到如何从新控制台直接创建新的sdtouts,我设法使用进程间通信管道获得相同的效果。

new_console.py

from multiprocessing.connection import Client
import sys

address = '\\\\.\pipe\\new_console'
conn = Client(address)
while True:
    print(conn.recv())

console_factory.py

from multiprocessing.connection import Listener
from subprocess import Popen, CREATE_NEW_CONSOLE

address = '\\\\.\pipe\\new_console'
listener = Listener(address)

def new_console():
    Popen("python new_console.py", creationflags=CREATE_NEW_CONSOLE)
    return listener.accept()

c1 = new_console()
c1.send("console 1 ready")
c2 = new_console()
c2.send("console 2 ready")

进一步的改进包括使用循环中的select将新控制台的输入发送到主进程。