Python: как писать и читать с существующего псевдо-терминала (pty/pts)
Я пытаюсь программно взаимодействовать с существующей программой, которая предоставляет интерфейс через псевдотерминал (/dev/pts/1)
Я плохо понимаю, как это работает. В настоящее время я могу грубо, но успешно взаимодействовать с:echo SomeCommandToSend >> /dev/pts/1
И может одинаково грубо получить результаты с:cat /dev/pts/1
Вопрос: Как я могу чисто и программно взаимодействовать с этим псевдо-терминалом из Python?
Я посмотрел на эти документы, но не смог понять, как использовать это в этом случае, так как я не хочу создавать новый процесс, просто общаться с существующим.
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()