如果我有一个 pty 或 tty 主/从对,如果我只有从节点的文件描述符,我能不能用它做什么?或者,换句话说:如果我有主节点的文件描述符,我可以only做什么?
我理解了终端/控制台/SSH 的“典型”关系,其中主端用于与人类交互,一个或多个程序(例如 shell 及其子进程)位于从端。我(松散地)理解了更不寻常(/古老?)的用例,例如使用 TTY 进行其他类型的数据链接,例如 PPP。这个问题不是“我不明白这个 TTY 业务”的问题。我问的是(“低级”?)“API”的东西:例如如果您无权访问主 FD,是否有任何 termios/ioctl 操作或对 TTY 对的其他编程更改无法完成? 我想最明显的是:
如果我有主端的FD,我只能从主端读/写。
我一直在阅读一些手册页并在我的 Linux 机器上进行实验:人们想要用 pty 做的基本事情(例如
stty columns 78
等)似乎可以在“任一端”工作。但我怀疑只有持有主端文件描述符的进程才能做一些事情(特别是因为主从名称二分法表明一些单方面控制/统治)。当然,由于我只在 Linux 上进行测试,Linux 的不同版本/配置与 Unix 之间可能存在行为差异,所以我不想假设我所看到的东西是可移植的。
动机常识/好奇心。
reptyr
ptyget
、expect
/empty
、screen
/tmux
(/neercs
?具有类似 reptyr
功能的那个) ,dtach
/abduco
,但它们都没有达到我对简约多功能性的最佳状态。我正在努力获得更多信息,以便我可以更好地评估现有解决方案和/或更好地设计我自己的工具来满足我的特定需求。
只有在拥有主 FD 的情况下,才能在 Linux 中的 PTY 上启用或禁用数据包模式 [
poll(2)
可以获取从端状态变化的
POLLPRI
事件(如果终端处于“分组模式”)。