unix - 如何在两个 TTY 之间创建循环?

标签 unix tty

每个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/

相关文章:

对 Unix 中 exec(family) 的使用感到困惑

linux - 如何在 shell 脚本中更改文件的内容?

c - 在运行时从父终端临时禁用子进程

bash - Bash 中的命令替换为 tty

python - 使用 pexpect/bash 时防止换行

linux - 为什么这个 oneliner 会给我一个错误?

linux - 命令行参数如何从 shell 传递到可执行文件?

python - 颠覆没有通过 python 脚本看到我的更新

c++ - 如果您可以在 C++ 中将串行数据视为文件,那么 termios 的用途是什么?

linux - 如何在启动过程后切换 linux 内核控制台?