每个Hello都有一个回复。第二个 TTY 将向发送者 TTY 发送问候,反之亦然:
echo 'echo hello > /dev/pts/1' > /dev/pts/0
第一个接收者应该向原始发送者发送“hello”,但事实并非如此。怎么了?
[澄清] 我有两个 shell 正在运行。/dev/pts/1 是初始发送者。
最佳答案
当您将 echo 命令发送到 /dev/pts/0
时,您实际上只是将该 echo 的输出发送到另一个 TTY 的输出 - 您不将其发送到其他 TTY 的输入缓冲区。因此,您的嵌套 echo
命令将仅显示在另一个 TTY 上,但不会执行。
有一个 ioctl()
调用 TIOCSTI
,可用于在另一个 TTY 上伪造输入,但前提是您对该另一个 TTY 具有“写入”权限。
很多年前,我记得我和一些 friend 在某些版本的 UNIX 上发现了漏洞,这些漏洞没有正确地强制执行 TIOCSTI 上的安全权限。如果 root 在某处登录了终端,则可以让 root 用户的终端代表您输入命令...
关于unix - 如何在两个 TTY 之间创建循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/513908/