...
> приглашение. Но когда я делаю 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.
Требуется, чтобы скрипт, запущенный, к примеру, в бэкграунде получал ввод для команды 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, то мне выводится пустая строка. Почему?
...
> приглашение. Но когда я делаю 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.
> это не знаю... но если строку "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