Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
 |  |  |  |  |  |  |
надо так: read -e Name < /dev/tty2 17.05.05 16:51 Число просмотров: 1948
Автор: :-) <:-)> Статус: Elderman
|
|
<beginners>
|
[linux] Перенаправление ввода с терминала. 08.05.05 19:34
Автор: ZloyShaman <ZloyShaman> Статус: Elderman
|
Требуется, чтобы скрипт, запущенный, к примеру, в бэкграунде получал ввод для команды read с указанного терминала. Т.е. echo "test" > /dev/tty2 отлично работает. А вот как сделать, чтобы read брал ввод с /dev/tty2?
|
 |
Уточнение - с чем трудности, сделать сначала open(... 11.05.05 12:39
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
|
> Требуется, чтобы скрипт, запущенный, к примеру, в > бэкграунде получал ввод для команды read с указанного > терминала. Т.е. echo "test" > /dev/tty2 отлично > работает. А вот как сделать, чтобы read брал ввод с > /dev/tty2?
Уточнение - с чем трудности, сделать сначала open( "/dev/tty2", ...); или даже это не помогает?
Если одна задача пытается сделать read с /dev/tty2, какая-нибудь getty например, то read другой будет ждать окончания этого запроса на ввод. Нужно рубить и убирать из респавна.
|
 |  |
Есть подвижки 12.05.05 21:49
Автор: ZloyShaman <ZloyShaman> Статус: Elderman
|
Итак, я логинюсь в /dev/tty1 и в /dev/tty2 под рутом. Из tty2 нахожу pid баша на tty1 и посылаю ему SIGSTOP. Он успешно замирает (не реагирует на ввод). Далее на tty2 я делаю:
cat /dev/tty1 | read -d q n
после чего иду в tty1 и ввожу символы, завершая ввод символом q
При этом ввод почему-то завершается только после второго нажатия q, что странно. Но всё-таки завершается, об этом можно судить по тому, что tty2 снова появляется приглашение. Но когда я делаю echo $n, то мне выводится пустая строка. Почему?
|
 |  |  |
ttysnoop 13.05.05 13:24
Автор: :-) <:-)> Статус: Elderman Отредактировано 13.05.05 13:35 Количество правок: 1
|
...
> приглашение. Но когда я делаю echo $n, то мне выводится > пустая строка. Почему?
это не знаю... но если строку "read -d q n" вынести в другой скрипт, к примеру a.sh, и сделать
cat /dev/tty1 | ./a.sh
то оно почему-то работает как нужно :-)
Есть программки ttysnoop или ttywatch - позволяют нескольким пользователям одновременно работать с одним терминалом (или просто подсматривать, что делается на чужом теринале ;-)
TTYSnoop allows you to snoop on login tty's through another tty-device or pseudo-tty. The snoop-tty becomes a 'clone' of the original tty, redirecting both input and output from/to it.
http://freshmeat.net/projects/ttysnoop/
|
 |  |  |  |
Попробую. Как ты считаешь, запуск из другого скрипта... 13.05.05 13:58
Автор: ZloyShaman <ZloyShaman> Статус: Elderman
|
> это не знаю... но если строку "read -d q n" вынести в > другой скрипт, к примеру a.sh, и сделать > cat /dev/tty1 | ./a.sh > то оно почему-то работает как нужно :-)
Попробую. Как ты считаешь, запуск из другого скрипта равносилен ли такой строчке:
cat /dev/tty1 | (read -d q n)
?
> Есть программки ttysnoop или ttywatch - позволяют > нескольким пользователям одновременно работать с одним > терминалом (или просто подсматривать, что делается на чужом > теринале ;-)
Не, надо без всяких программ.
|
 |  |  |  |  |
Оказывается тут в любом случае порождается новый шелл (раз... 13.05.05 16:00
Автор: :-) <:-)> Статус: Elderman
|
> Попробую. Как ты считаешь, запуск из другого скрипта > равносилен ли такой строчке: > cat /dev/tty1 | (read -d q n)
Оказывается тут в любом случае порождается новый шелл (раз присутствует pipe), и read будет делаться уже в новом шелле, следовательно и переменная n будет действительна только внутри нового шелла, короче, на нее можно будет ссылаться только внутри круглых скобок.
cat /dev/tty1 | (read -d q n ; echo $n; )
А после выполнения этой команды произойдет возврат в родительский шелл, и в нем переменной n не будет...
|
 |  |  |  |  |  |
Спасибо, всё осознал. 17.05.05 15:36
Автор: ZloyShaman <ZloyShaman> Статус: Elderman
|
|
 |  |  |  |  |  |  |
надо так: read -e Name < /dev/tty2 17.05.05 16:51
Автор: :-) <:-)> Статус: Elderman
|
|
|
|