pty 特殊文件
用途
提供伪终端 (pty) 设备驱动程序。
描述
在 "AIX版本 4中,ty 子系统使用的命名约定与 "UNIX系统 V 中的命名约定类似。控制驱动程序有一个节点 "/dev/ptc,工作驱动程序有最多的节点 "N,即 "/dev/pts/"n。 N 可在 pty 配置中进行配置,并且可以通过 pty 重新配置进行动态更改,而无需关闭打开的设备。
控制设备设置为 克隆设备 ,其主设备号是克隆设备的主设备号,其次设备号是控制驱动程序的主设备号。 文件系统中没有用于控制设备的节点。 一个控制设备只能打开一次,但工作程序设备可以多次打开。
通过使用 /dev/ptc 特殊文件打开控制设备,应用程序可以快速打开未使用的伪终端的控制和工作程序端。 可以使用 ttyname 子例程检索相应工作程序端的名称,该子例程始终返回工作程序端的名称。
对于 Berkeley pty 子系统,命令必须通过按顺序打开每个控制端来搜索未使用的伪终端。 如果控制端已在使用中,那么无法将其打开。 因此,打开将失败,将 errno 变量设置为 EIO,直到找到未使用的伪终端为止。 可以配置 pty 子系统,以便使用特殊文件与 BSD pty 命名约定:
| 项 | 描述 |
|---|---|
| 控制设备 | /dev/pty[p-zA-Z][0-f] |
| 工作程序设备 | /dev/tty[p-zA-Z][0-f] |
这些特殊文件不是操作系统特殊文件的符号链接。 它们是完全分开的。 使用 BSD 命名约定的控制和工作程序对设备的数量是可配置的。
以下 ioctl 命令适用于伪终端:
| 项 | 描述 |
|---|---|
| TIOCSTOP | 停止输出到终端。 这与使用 Ctrl-S 键序列相同。 此命令不允许使用任何参数。 |
| TIOCSTART | 重新启动由 TIOCSTOP 命令或 Ctrl-S 键序列停止的输出。 这与输入 Ctrl-Q 键序列相同。 此命令不允许使用任何参数。 |
| TIOCPKT | 启用和禁用包方式。 通过指定 (通过引用) 非零参数来启用包方式。 通过指定 (通过引用) 零参数将其禁用。 当应用于伪终端的控制侧时,从该终端的每个后续读取返回写入到伪终端的工作程序部分上的数据。 数据前面有一个零字节 (符号定义为 TIOCPKT_DATA) 或一个反映控制状态信息的字节。 在后一种情况下,字节是零个或多个以下位的包含 OR:
在使用此方式时,可以通过选择异常条件来检测要从控制端读取的控制状态信息的存在。 此方式由 rlogin 和 rlogind 命令用于登录到远程主机,并通过正确的反冲输出实现远程回传和本地 Ctrl-S 和 Ctrl-Q 流控制。 |
| TIOCUCNTL | 使用类似于 TIOCPKT 方式的协议,启用和禁用允许通过伪终端传递少量简单用户 ioctl 命令的方式。 TIOCUCNTL 和 TIOCPKT 方式互斥。 通过指定 (通过引用) 非零参数从伪终端的控制端启用此方式。 通过指定 (通过引用) 零参数将其禁用。 从控制端进行的每次后续读取都将返回写在伪终端的工作程序部分上的数据,前面是零字节或反映工作程序端的用户控制操作的单个字节。 用户控制命令由没有数据的特殊 ioctl 操作组成。 该命令以 UIOCCMD (Value)形式发出,其中 Value 参数指定 1 到 255 范围内的数字。 操作值在下次从控制端读取时作为单个字节接收。 值 0 可与 UIOCCMD ioctl 操作配合使用,以探测是否存在此设施。 控制方未使零可用于读取。 可以通过选择异常条件来检测命令操作。 |
| TIOCREMOTE | 伪终端的控制部分的方式,独立于 TIOCPKT。 此方式对伪终端的输入实施流控制 (而不是输入编辑) ,而不考虑终端方式。 对控制终端的每次写入都为读取终端的进程产生记录边界。 在正常使用中,写入数据就像在终端上输入的数据一样,而写入零字节就像输入文件结束符一样。 此方式用于在窗口管理器和流控制的输入中进行远程线路编辑。 |