python - 为同一进程创建新控制台

标签 python

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

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

但是该消息不会显示在新控制台上。

我有什么选择?

最佳答案

虽然我没有找到如何从新控制台直接创建新的 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 将输入从新控制台发送到主进程。

关于python - 为同一进程创建新控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26761108/

相关文章:

python - TkInter 在线程运行时禁用按钮

python - 从特征到单词 python ("reverse"bag of words)

javascript - 如何使用回调更改字形的颜色?

python - 使用 IIS 6 托管 Mercurial

python - 为什么 numpy.median 规模如此之大?

python - NumPy C API : Link several object files

python - Django tastypie 覆盖 obj_create 将不起作用

python - 调试 Django 表单验证错误

python - Pytest junit-xml 报告没有 "file"字段

python - Django OAuth 工具包和 Django Rest Swagger 集成