Когда я запустил cat -
, скажите /dev/pts/2
и попробуйте написать его ввод от другого tty с помощью echo foo > /dev/pts/2
или echo foo > /proc/(pid of cat)/fd/0
он просто печатает foo в pts/2, кошка не повторяет его. Зачем? Как отправить ввод коте из другого tty, чтобы он также повторил его?Как перенаправить ввод с другого tty?
ответ
Я думаю, что здесь существует фундаментальное недоразумение: не может вводить содержимое в другой поток TTY (если только у вас нет хозяина).
Вы можете, однако, позвонить cat /dev/pts/0
, чтобы читать из потока входных данных TTY, но будьте осторожны, что вы будете бороться с любым процессом, который уже существует.
Я пробовал с правами root, которые также не работают. – shanky061
также '/ dev/pts/2' - это файл, поэтому, когда мы что-то пишем, программа, читающая его, должна прочитать это. – shanky061
@ shanky061 Конечно, программа, прочитанная с * master * end, прочитает ее. Так же, как когда мастер пишет, раб может читать. – o11c
У каждого терминала есть файл для него, в/dev/pts /.
$ пс
, чтобы определить, какой терминал вы находитесь. Пример: Я на клемме 3
PID TTY TIME CMD
1477 PTS/3 пс 00:00:00
26511 очки/3 00:00:01 Баш
Чем просто перенаправить ваш выход на этот терминал.
кошка F>/DEV/очки/3
Сделать первый в первой из трубы на втором терминале, то один вы хотите, чтобы отобразить текст на
mkfifo --mode=600 /tmp/pipe
Перенаправление команды к этой трубе на первом терминале
cat foo > /tmp/pipe
У вас есть необходимость сделать это именно так? Кажется, что он может работать. Вот пример [mkfifo] (http://www.linuxjournal.com/article/2156). –
@MicahElliott Я знаю, что использование fifo будет работать, но просто хочу знать, почему прямое отправление на его stdin не работает. – shanky061
Он работает, если вход представляет собой трубку, например, запустить 'cat | tr a-z A-Z' в одном терминале; затем 'echo aBc>/proc//fd/0' в другом терминале. –
jfs