CESS; //设置进程控制方式 vtmode.relsig=SIGUSR1; vtmode.acqsig=SIGUSR2; if (ioctl(0,VT-SETMODE,&vtmode)==-1) exit(1);//出错即终止此进程 } /* 放弃VT的信号处理例程 */ void release-disp(void) { signal(SIGUSR1,release-disp); 保存整个图形屏幕于内部缓冲区videobuf中; ioctl(0),MODESWITCH oldmode,NULL); //oldmode为进入图形模式之前的显示方式 ioctl(0,VT-RELDISP,VT-TRUE); //VT-TRUE表明同意放弃VT,如果此项为0,则表示拒绝放弃VT. } /* 接受VT的信号处理例程 */ void acquire-disp(void) { signal(SIGUSR2,acquire-disp); ioctl(0,newmode,NULL);//newmode为应用程序所处的图形模式 scrnmem=(char *)ioctl(0,MAPCONS,NULL); //重新获取图形缓冲区的物理地址 从videobuf中恢复整个图形屏幕,并释放videobuf; ioctl(0,VT-RELDISP,VT-ACKACQ); //VT-ACKACQ表明接受VT } 在微机UNIX操作系统下,针对EGA/VGA进行直接视频程序设计,独立开发一个图形程序包,不仅小巧方便,而且可以重用以前在DOS下开发的图形应用程序。笔者在SCO UNIX系统下开发了一个小的低层图形软件包,许多以前的DOS图形应用程序都可以移植到UNIX系统下来。 另外,本文介绍的程序在使用前还应包含下列文件,即: #include #include #include #include #include #include 分配空间时还应加上#include
参考文献 1 仲萃豪等.UNIX系统V/386第4版-集成软件开发指南.北京:电子工业出版社,1992.8. 2 张福炎等.微型计算机IBM PC的原理与应用(续二)-图形显示器及其程序设计.南京:南京大学出版社,1990.7.
|