远程模式
通过使用ioctl的TIOCREMOTE命令,PTY master可以设置PTY slave为远程模式。尽管FreeBSD 5.2.1, Mac OS X 10.3, 和 Solaris 9使用同样的命令来使能这个特性,在Solaris中ioctl的第3各参数是一个整数,而FreeBSD 和 Mac OS X的相应参数是一个指向整数的指针(Linux 2.4.22 不支持这个命令)。
当设置成这个模式的时候,PTY master告诉PTY slave行规则模块,不要对从PTY master接收到的任何数据进行处理,要忽略slave的termios结构中的canonical/noncanonical标记。Remote模式用于一些类似窗口管理的应用程序,这些应用程序进行它们自己的行编辑。
窗口大小的改变
PTY master上面的进程可以通过ioctl的TIOCSWINSZ命令来设置slave的窗口大小。如果新的大小和当前的大小不一样,那么会给PTY slave的前台进程组发出一个SIGWINCH信号。
信号产生
读写PTY master的进程可以给PTY slave的进程组发送信号。在Solaris 9中,这个通过ioctl的TIOCSIGNAL命令来实现,其第三个参数就是信号的号码。FreeBSD 5.2.1 和 Mac OS X 10.3中,相应的ioctl命令是TIOCSIG,并且第三个参数是一个指向表示信号号码的整数的指针(Linux 2.4.22 也不支持这个ioctl命令)。
译者注
原文参考
8、总结
我们通过大致展示如何使用伪终端以及查看一些使用用例来开始本章。我们然后检查在本章4个平台上面打开伪终端的代码,来继续。然后我们使用这些代码给出了一个pty_fork函数,这个函数可以被许多应用程序使用。我们使用这个函数作为后面的pty程序的基础,然后我们通过这个pty程序,展示了伪终端的许多特性。
一般我们在大多数UNIX系统中使用伪终端来提供网络登陆。我们也通过一个用批处理脚本启动交互程序的脚本程序,看到了其他使用伪终端的使用。
网友评论