Python诅咒:用一个脚本控制两个终端(Linux)

Python诅咒:用一个脚本控制两个终端(Linux),python,curses,tty,terminal,Python,Curses,Tty,Terminal,我想制作一个Python脚本,在两个独立的终端窗口中控制诅咒。不是诅咒单个终端中的窗口,而是我的X窗口管理器中urxvt的两个不同实例 大概是这样的: class myprogam(): controlterm1() controlterm2() def controlterm1(): Create a new (could be current) urxvt terminal window. In the urxvt window s

我想制作一个Python脚本,在两个独立的终端窗口中控制诅咒。不是诅咒单个终端中的窗口,而是我的X窗口管理器中urxvt的两个不同实例

大概是这样的:

class myprogam():

    controlterm1()
    controlterm2()

    def controlterm1():
        Create a new (could be current) urxvt terminal window.
        In the urxvt window setup curses with curses.initscr(), etc.
        racergame()

    def controlterm2():
        Create another urxvt terminal window.
        Setup curses.initscr, borders, size, etc. in window, leaving the old one alone.
        typewriter()  

    def racecargame():
        Racing game in curses

    def typwritter()
        Boring program for writing

myprogram()
当我使用命令“tty”时,我看到伪终端窗口被赋予了一个名称,这给了我一个对/dev/pts/somenumber的引用,其中第一个终端仿真器被分配了一个零,然后新终端被分配了1、2等。我可以使用此标识符作为执行此操作的基础吗


脚本不必实际加载urxvt的新实例,因为我很高兴它可以控制一个已经打开的实例。

原则上,打开多个设备并从一个脚本对它们执行I/O操作没有问题。然而,我见过的大多数诅咒软件都假设它对与程序相关联的一个终端进行I/O。例如,initscr不接受任何参数。它查看环境变量以确定终端特征


有鉴于此,将程序分成两部分可能更容易,每个终端上运行一个程序,通过消息传递进行通信。

原则上,打开多个设备并从一个脚本对其进行I/O操作是没有问题的。然而,我见过的大多数诅咒软件都假设它对与程序相关联的一个终端进行I/O。例如,initscr不接受任何参数。它查看环境变量以确定终端特征


有鉴于此,将程序分成两部分可能更容易,每个终端上运行一个程序,通过消息传递进行通信。

ncurses C API具有可用于初始化屏幕的
newterm
函数。根据
newterm
手册页:

输出到多个终端的程序应为每个终端使用newterm例程,而不是initscr


但是,python curses模块没有实现newterm。

ncurses C API具有可用于初始化屏幕的
newterm
函数。根据
newterm
手册页:

输出到多个终端的程序应为每个终端使用newterm例程,而不是initscr


但是,python curses模块没有实现newterm。

将程序分为2段肯定很容易,这就是我为原型所做的。那么,如果initscr()输出到它在环境变量中找到的终端,环境变量是否可以被动态更改,以将其复制到其他地方输出?您可以尝试,但我对此表示怀疑。把它分成两个独立的进程,每个进程管理一个显示,这有什么错呢?这没什么错,但如果你启动了一个新程序,你就会冗余地导入东西,感觉就像被黑客攻击了一样。我错过什么了吗?一种在避免冗余模块导入的同时调用新程序的方法?将程序分为两部分绝对很容易,这就是我为原型所做的。那么,如果initscr()输出到它在环境变量中找到的终端,环境变量是否可以被动态更改,以将其复制到其他地方输出?您可以尝试,但我对此表示怀疑。把它分成两个独立的进程,每个进程管理一个显示,这有什么错呢?这没什么错,但如果你启动了一个新程序,你就会冗余地导入东西,感觉就像被黑客攻击了一样。我错过什么了吗?一种在避免冗余模块导入的同时调用新程序的方法?我遇到了newterm,并考虑试用C来实现它。但我忍不住认为python中有一些东西可以为我提供解决方案。诚然,我很难找到这样的解决办法。pty模块有什么帮助吗?还是我找错人了?我遇到了newterm,并考虑用C来做。但我忍不住认为python中有一些东西可以为我提供解决方案。诚然,我很难找到这样的解决办法。pty模块有什么帮助吗?还是我找错树了?