Python:如何写入和读取现有的PseudoTerminal(pty / pts)

时间:2017-09-12 16:28:07

标签: python python-2.7 pty

我试图以编程方式与通过伪终端提供接口的现有程序进行交互(/ dev / pts / 1)

我对这是如何工作的理解不足。我现在可以粗暴地进行互动,但成功地: echo SomeCommandToSend >> /dev/pts/1

并且可以同样粗略地检索结果:
cat /dev/pts/1

问题:如何从Python干净地以编程方式与此伪终端进行交互?

我看过these docs但是在这种情况下无法看到如何使用它,因为我不想生成新进程,只是与现有进程通信。

1 个答案:

答案 0 :(得分:1)

以下代码会一次打印hello到您的终端(在您的终端中执行tty以获取/dev/pts/n)并从终端无限读取。

import sys                                           

with open("/dev/pts/1", "wb+", buffering=0) as term:
    term.write("hello".encode())
    while True:
        print(term.read(1).decode(), end='')
        sys.stdout.flush()