如何重定向来自另一个 tty 的输入?
How to redirect input from another tty?
当我 运行 cat -
说 /dev/pts/2
并尝试使用 echo foo > /dev/pts/2
或 echo foo > /proc/(pid of cat)/fd/0
从另一个 tty 写入它的输入时它只是打印 foo在 pts/2 中,cat 没有重复它。为什么?
如何从另一个 tty 向 cat 发送输入以便它也重复它?
每个终端都有一个文件,在 /dev/pts/.
$ ps
以确定您在哪个终端上。示例:我在 3 号航站楼
PID TTY TIME CMD
1477 pts/3 00:00:00 ps
26511 pts/3 00:00:01 bash
而不只是将您的输出重定向到该终端。
cat foo > /dev/pts/3
在第二个终端上创建一个先进先出的管道,即您要在其上显示文本的终端
mkfifo --mode=600 /tmp/pipe
将命令重定向到第一个终端上的那个管道
cat foo > /tmp/pipe
我认为这里存在一个根本性的误解:您不能将内容注入另一个 TTY 的输入流(除非您拥有 master)。
但是,您可以调用 cat /dev/pts/0
从另一个 TTY 的输入流中读取,但请注意,您将与已经存在的任何进程作斗争。
当我 运行 cat -
说 /dev/pts/2
并尝试使用 echo foo > /dev/pts/2
或 echo foo > /proc/(pid of cat)/fd/0
从另一个 tty 写入它的输入时它只是打印 foo在 pts/2 中,cat 没有重复它。为什么?
如何从另一个 tty 向 cat 发送输入以便它也重复它?
每个终端都有一个文件,在 /dev/pts/.
$ ps
以确定您在哪个终端上。示例:我在 3 号航站楼
PID TTY TIME CMD
1477 pts/3 00:00:00 ps
26511 pts/3 00:00:01 bash
而不只是将您的输出重定向到该终端。
cat foo > /dev/pts/3
在第二个终端上创建一个先进先出的管道,即您要在其上显示文本的终端
mkfifo --mode=600 /tmp/pipe
将命令重定向到第一个终端上的那个管道
cat foo > /tmp/pipe
我认为这里存在一个根本性的误解:您不能将内容注入另一个 TTY 的输入流(除非您拥有 master)。
但是,您可以调用 cat /dev/pts/0
从另一个 TTY 的输入流中读取,但请注意,您将与已经存在的任何进程作斗争。