我有一个python应用程序,我想把它作为一个多终端处理程序,我希望每个对象都有自己的终端,每个对象运行自己的实例,就像我在Linux中运行两个或多个独立的终端(/bin/sh或/bin/bash)时一样
示例:(只是逻辑而不是代码)
first_terminal = terminalInstance()
second_terminal = terminalInstance()
first_result = first_terminal.doSomething("command")
second_result = second_terminal.doSomething("command")实际上,我需要让每个终端在虚拟环境中获取stdin & stdout并控制它们,这就是为什么它们必须分开的原因,这在python范围内是可能的吗?我见过很多处理单个终端的代码,但是如何使用多个终端来实现呢?PS我不想包含want循环(如果可能的话),因为我想增加可伸缩性,从处理2个或更多的终端到我的系统所能处理的?是否可以通过引用控制它们,给每个终端一个引用,然后调用该对象并发出命令?
发布于 2015-06-24 11:43:11
除其他外,pexpect模块(https://pypi.python.org/pypi/pexpect/)允许您通过伪tty启动程序,这“允许您的脚本生成一个子应用程序并控制它,就像一个人在输入命令一样”。
您可以很容易地生成多个命令,每个命令运行在一个单独的伪tty中,并由一个单独的对象表示,并且可以单独地与每个对象交互。在交互的时间/方式上有很大的灵活性。您可以向它们发送输入,并读取它们的输出,无论是阻塞输出还是非阻塞输出,并包含超时和可选输出。
下面是一个简单的会话示例(运行bash,让它执行"ls“命令,收集第一行输出)。
import pexpect
x = pexpect.spawn("/bin/bash")
x.sendline("ls")
x.expect("\n") # End of echoed command
x.expect("\n") # End of first line of output
print x.before # Print first line of output请注意,您将接收来自终端的所有输出,通常包括发送给它的每个字符的回显副本。如果运行类似shell的内容,还可能需要设置shell提示符(或确定正在使用的shell提示符),并将其用于解析输出(即查找每个命令输出的结尾)。
https://stackoverflow.com/questions/31022505
复制相似问题