【问题标题】:Python: How to write to and read from an existing PseudoTerminal (pty/pts)Python:如何写入和读取现有的 PseudoTerminal (pty/pts)
【发布时间】:2017-09-12 16:28:06
【问题描述】:

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

我对它的工作原理知之甚少。我目前可以粗略但成功地与:
echo SomeCommandToSend >> /dev/pts/1

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

问题:如何通过 Python 以干净的方式以编程方式与这个伪终端进行交互?

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

【问题讨论】:

    标签: python python-2.7 pty


    【解决方案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()
    

    【讨论】:

    • 谢谢!您对如何在 python 2 中复制该打印语法有什么建议吗?
    • @MtlDev,是的,将print 替换为sys.stdout.write
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 2011-01-04
    • 2017-08-21
    • 1970-01-01
    相关资源
    最近更新 更多