我们被告知一个 tty 最多可以控制一个会话,而且可以控制 ttys 不允许其控制会话内的后台进程组对其进行写入或读取,前者由选项控制TOSTOP
。
但是,写入 tty 的其他会话的位置是什么?可以以某种方式控制它吗?假设tty1
和tty2
,都带有 shell。我很惊讶地发现以下命令shell2
在tty2
...
ls > /dev/tty1
...实际上,无论在 中将选项设置为什么,都会从ls
on产生输出。由于完全是另一个会话的一部分,所以我认为可能就是这样,因为当尝试从后台进程组写入时,该选项确实执行了它应该执行的操作。有人能告诉我发生了什么吗?tty1
TOSTOP
tty1
shell2
TOSTOP
答案1
该TOSTOP
选项(例如在Unix 电动工具, 或者Linux csh 脚本在使用 & (bg) 运行时进入暂停状态(tty 输出))指的是贝壳的背景进程。在这种情况下,前台和后台有一个已知关系。
但是,如果你的进程打开了一个终端,它(几乎总是)拥有该终端的权限,而你拥有的另一个进程(在另一个终端中运行)也拥有该权限。不是具有该关系的人可以打开同一个设备并对其进行写入。