我试图了解如何创建一个新的控制台来打印东西,也就是说,有多个标准输出可用。 在阅读了一些问题后,我才设法做到了这一点:
from subprocess import Popen, CREATE_NEW_CONSOLE
handle = Popen("cmd", stdin=PIPE, creationflags=CREATE_NEW_CONSOLE)
i.write(b'hello')
但是消息没有显示在新控制台上。
我有什么选择?
答案 0 :(得分:1)
Altough我没有找到如何从新控制台直接创建新的sdtouts,我设法使用进程间通信管道获得相同的效果。
from multiprocessing.connection import Client
import sys
address = '\\\\.\pipe\\new_console'
conn = Client(address)
while True:
print(conn.recv())
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将新控制台的输入发送到主进程。