问题:
如果我有一个pty或tty的主/从对,如果我只有从节点的文件描述符,我不能做什么?或者换句话说:只有当我拥有主节点的文件描述符时,我才能做些什么?
我的当前理解:
我了解终端/控制台/SSH与人类接口的典型关系,以及一个或多个程序(例如一个shell和它的子进程)在从节点上。我(大致)了解更不寻常(/过时?)的用途,例如使用TTY进行其他类型的数据链接,如PPP。这个问题不是“我不明白TTY业务”的问题。我问的是(“低级”?)“API”相关的东西:例如,在没有访问主FD的情况下,是否存在任何termios/ioctl操作或其他编程更改TTY对,而无法完成?
我想最明显的是:
- 如果我只有主节点的FD,我只能从主节点读取/写入。
- grnatpt/unlockpt/ptsname仅可用于主节点的FD。
还有什么吗?
我一直在阅读一些手册并在我的Linux机器上进行试验:要做一个pty的基本事情(例如stty columns 78
等),似乎在“任何一端”都可以工作。但是我认为只有拥有主节点的文件描述符的进程才能做一些事情(特别是因为主-从名称二分法意味着某种单方面控制/统治)。当然,由于我只在Linux上测试,所以可能会存在版本/配置之间的行为差异,因此我不想假设我看到的是可移植的。
动机
(以防有人想知道我为什么要知道)
- 一般知识/好奇心。
- 我不太喜欢目前用于处理 ptys 的命令行工具的选项。不详细说明,我已经看过
reptyr
、ptyget
、expect
/empty
、screen
/tmux
(/neercs
? 带有类似reptyr
功能的那个)、dtach
/abduco
,但都不能满足我的简洁多功能需求。我正在努力学习,以便更好地评估现有解决方案和/或更好地设计自己的工具来满足我的特定需求。