Почему я не могу читать в недавно открытом TTY на Raspbian - PullRequest
2 голосов
/ 06 апреля 2020

У меня небольшая проблема с моим кодом, работающим в Python 3. Я пытаюсь обмануть Raspbian, чтобы заставить его поверить, что tty - это внешнее устройство. Однако я не могу прочитать ни одного слова, написанного ранее с помощью os.write(slave, text.encode()), используя что-то вроде os.read(slave, 512).

Я открываю tty следующим образом master, slave = os.openpty() Я думаю, что мне не хватает параметра или чего-то еще , но я не могу выяснить, что.

Я пытался получить доступ к tty в другом терминале с cat <, с подпроцессом, но программа все еще блокируется, когда она должна прочитать.

Пожалуйста, объясните, в чем проблема.

С уважением.

1 Ответ

1 голос
/ 06 апреля 2020

Я думаю, что ваша ошибка здесь в том, что вы пытаетесь читать раба. Если вместо этого вы прочитаете мастер, вы должны получить свой вывод.

Цитата: http://rachid.koucha.free.fr/tech_corner/pty_pdip.html

Псевдотерминал - это пара устройств символьного режима, также называемая pty. Один является ведущим, а другой - подчиненным, и они связаны двунаправленным каналом. Любые данные, записанные на ведомой стороне, передаются на выход ведущей стороны. И наоборот, любые данные, записанные на ведущей стороне, направляются на выход ведомой стороны, как показано на рисунке 2.

RPI

...