Как я могу создать цикл между двумя TTY? - PullRequest
2 голосов
/ 05 февраля 2009

Каждый Hello имеет ответ. Второй TTY отправит привет TTY отправителю и наоборот:

echo 'echo hello > /dev/pts/1' > /dev/pts/0

1-й получатель должен отправить "привет" исходному отправителю, но это не так. Что не так?

[Уточнение] У меня работают две оболочки. / dev / pts / 1 - начальный отправитель.

1 Ответ

3 голосов
/ 05 февраля 2009

Когда вы отправляете команду echo на /dev/pts/0, вы буквально просто отправляете вывод этого эха на вывод другого TTY - вы не отправляете его на другой TTY входные буферы. Поэтому ваша вложенная команда echo будет просто отображаться на другом TTY, но не будет выполнена.

Существует ioctl() вызов TIOCSTI, который можно использовать для фальсификации ввода в другом TTY, но только если у вас есть разрешение на «запись» в этот другой TTY.

Много лет назад я вспоминаю, что некоторые друзья и я обнаружили дыры в некоторых версиях UNIX, которые не обеспечивали правильное соблюдение разрешений безопасности для TIOCSTI. Если root оставил терминал где-то вошедшим в систему, можно было заставить терминал пользователя root вводить команды от вашего имени ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...