我正在研究 Linux 中的伪终端。我对 pty 对的理解是,主 pty 可以有一个与之关联的从属 pty,我们可以从其获取文件描述符点名称系统调用。但是,我偶然发现了这个描述关联我对一个主人可以拥有的奴隶数量感到困惑。
如果主设备有多个从设备,那么 ptsname 将如何决定在所有连接的从设备伪终端中应该返回哪个文件描述符?
另外,如果存在多个从属设备,那么主设备将如何与每个 pty 交互?我的意思是,如果一个进程在主设备 fd 上写入,它会出现在每个从属设备上吗?
我也搜索了手册页,但没有明确提到主服务器是否可以有多个从服务器。此外,也没有提到一个主服务器和多个从服务器场景之间的 I/O 交互。
答案1
如果我正确理解了链接中的描述,那么一个主节点带有多个从节点是一种无意的侥幸,您只有通过绕过openpty
并/dev/pts/*
直接打开节点才能获得这种侥幸,因为以下/dev/pts/*
节点在内部只是获得相同的主节点引用。
我希望ptsname
返回打开主服务器时选择的第一个从服务器。这将是一个有趣的实验,以找出在写入具有多个从服务器的主服务器时会发生什么:它只写入第一个从服务器(预期)还是写入所有从服务器(意外)?
我还没有看到过任何有一个主服务器和多个从服务器的应用程序。
而且 BSD 伪终端显然总是成对的,因此我认为这不是有意的。