终端tty、虚拟控制台及FrameBuffer的切换过程
该调用在v_active字段返回活动虚终端号,在v_state字段中可获得全部虚终端状态的位掩码(v_state的位x是虚终端x的状态,该位为1说明对应的虚终端是打开状态,否则为可利用状态)。VT_SENDSIG 指定要发送给虚终端(在v_state中)的位屏蔽的信号(在v_signa1中)。用于ioct1的系统调用的参数是一个指向vt_stat结构的指针(结构定义见前面VT_GETSTATE)。 VT_RELDISP 用于告诉虚终端管理器进程是否已经释放了显示。一个零值指示拒绝释放显示。 VT_ACTIVATE 使在参数中指定的虚终端号为活动虚终端。″VT″管理器将产生一个切换,如同在键盘上按组合热键一样。如果指定的虚终端不处于打开状态或者不存在,调用将失败,并置errno的值为ENXI0。 VT_WAITACTIVE 等待虚终端被激活,不需要参数。 有了上面的介绍,现在我们就可以实现虚终端了: 1?查找是否有可利用的虚终端,如没有,则结束。 2?打开可利用虚终端设备文件,以便进行。 3?利用ioct1的TCSETSW功能设置虚终端参数,其作用同Unix的stty命令一样。 4?利用ioct1的VT_ACTIVATE功能激活虚终端,并利用VT_WAITACTIVE功能等待其可用。 5?用putenv函数设置环境变量。 至此,一个虚终端程序就实现了(当然,是利用Unix系统提供的功能,但它与Unix提供的newvt命令的实现并无区别)。在这个虚终端里,我们可方便地实现我们自己想要的功能,而不必担心会破坏原来的环境。 三 、虚拟控制台的切换过程 (编辑:徐州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |