微机UNIX直接视频图形程序设计毕业论文(2)
2014-12-10 01:46
导读:ioctl(0,MODESWITCH | oldmode,NULL) oldmode是进入图形方式之前获取的方式,UNIX系统中,获取的方式和设置的方式之间的关系为: 设置方式值=获取方式值|MODESWITCH
ioctl(0,MODESWITCH | oldmode,NULL)
oldmode是进入图形方式之前获取的方式,UNIX系统中,获取的方式和设置的方式之间的关系为:
设置方式值=获取方式值|MODESWITCH
二、虚拟终端的使用
虚拟终端(Virtual Terminal,简称VT)加强了UNIX系统V/386的接口功能,它不仅允许单个用户开发一个图形应用软件,而且允许多用户、多道程序在同一个物理终端上运行,在开始一个用户的应用程序之前不必停止另一个应用程序,而且各个用户之间可以互相切换。
虚拟终端有两种操作方式[1],一种是自动操作方式(VT-AUTO),这是默认情况,比较简单,应用程序并不了解终端用户接受或放弃当前VT的请求,这意味着被切换掉的进程的任何输入输出都可能丢失。另一种方式是进程控制方式(VT-PROCESS),该方式支持应用程序与其它正在使用VT的进程之间同步,应用程序可以负责接受或放弃使用VT。
[1]中介绍了以进程方式控制VT的过程,并以设备驱动程序方式介绍了接受和放弃对VT控制的信号处理例程。本文给出针对IBM标准终端编制VT的程序和相应的信号处理例程。
/* 设置虚拟终端 */
void setvirtualterm(void)
{
struct vt-mode vtmode;
signal(SIGUSR1,release-disp); //release-disp为放弃VT的信号处理例程
signal(SIGUSR2,acquire-disp); //acquire-disp为接受VT的信号处理例程
vtmode.mode=VT_PROCESS; //设置进程控制方式
vtmode.relsig=SIGUSR1;
vtmode.acqsig=SIGUSR2;
if (ioctl(0,VT-SETMODE,