当终端设备处于cooked模式时,输入到终端的字节被内核缓存和处理,一些字节用于行编辑和“cosumed”,使得read
一次返回一行。
但对于 pty 来说,主 fd 的输出可以读取为从属 fd 的输入,反之亦然,所以我的问题是:
pty 设备是否有两个独立的输入缓冲区,与 tty 不同,每个 tty 设备有一个缓冲区?
答案1
pty 的行为与普通 tty 相同。普通的 tty 有输入(原始模式和熟模式)和输出队列。
使用 pty,tty 输出队列连接到主输入,tty 原始输入连接到主输出。所以并不是队列多了,而是你可以把tty输出队列当成master端的输入。
添加
pty 是一个普通的 tty。通用 tty 部分处理行编辑、原始和熟模式输入、流控制(如 Ctrl+S)等。
每个 tty 都有一个处理实际输入和输出的后端。这可以是串行驱动程序。它可以是与键盘和 VGA 或帧缓冲区连接的驱动程序。它也可以是 PTY 主控。在 pty 的情况下,tty 输出可供 master 读取,并且 master 写入被放置在原始输入队列中。