多进程操作framebuffer

简介:

     打开了framebuffer,你可以在其上画图,写字。屏幕上就及时能显示你往framebuffer里填充的内容。但是在多进程操作framebuffer的环境下,比如在一个拥有窗口管理环境下,操作framebuffer显示了全屏的一幅图片,此时窗口管理器有个进程在不断的更新系统当前时间,这样就存在当前图片显示不完整的情况。

    此时实际上只需要当前进程显示完整的一幅图片,改图片的显示区域不希望被其他操作framebuffer的进程所干扰。 如何避免这种情况的发生?方法就是操作tty设备。原理很简单,就是打开一个新的终端tty设备,并把该设备激活,设为图形模式,让改终端独占 framebuffer设备,然后再输出图形,这样,即使有其他进程在操作framebuffer,当前终端的framebuffer就不会被重刷,从而实现了稳定的输出。 
    一般来说linux系统中会存在7个tty设备,tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上.tty1--tty6都称为虚拟终端设备,那么打开哪一个新的tty设备呢?先用ioctl(ConsoleFD, VT_OPENQRY, &vtnumber)查询一下当前打开的虚拟终端数量,一般的发行版都是打开6个,即tty1~tty6,这个可以在/etc/inittab里面控制。另外,tty0是系统自动打开的,但不用于用户登录,所以查询的结果是一共打开7个,vtnumber=7,这个数字也就是下一次可用的终端号,即 tty7。

     本文转自 驿落黄昏 51CTO博客,原文链接:http://blog.51cto.com/yiluohuanghun/1064152,如需转载请自行联系原作者

相关文章
|
4月前
|
算法 Unix Linux
进程原理及系统调用
进程原理及系统调用
|
6月前
|
安全 Windows
3.3 Windows驱动开发:内核MDL读写进程内存
MDL内存读写是一种通过创建MDL结构体来实现跨进程内存读写的方式。在Windows操作系统中,每个进程都有自己独立的虚拟地址空间,不同进程之间的内存空间是隔离的。因此,要在一个进程中读取或写入另一个进程的内存数据,需要先将目标进程的物理内存映射到当前进程的虚拟地址空间中,然后才能进行内存读写操作。
48 0
3.3 Windows驱动开发:内核MDL读写进程内存
|
10月前
|
算法 Linux 调度
进程原理及其系统调用(上)
进程原理及其系统调用
93 0
|
10月前
|
Unix Linux
进程原理及其系统调用(下)
进程原理及其系统调用
56 0
|
11月前
|
存储 API Windows
驱动开发:内核中进程与句柄互转
在内核开发中,经常需要进行进程和句柄之间的互相转换。进程通常由一个唯一的进程标识符(PID)来标识,而句柄是指对内核对象的引用。在Windows内核中,`EProcess`结构表示一个进程,而HANDLE是一个句柄。为了实现进程与句柄之间的转换,我们需要使用一些内核函数。对于进程PID和句柄的互相转换,可以使用函数如`OpenProcess`和`GetProcessId`。OpenProcess函数接受一个PID作为参数,并返回一个句柄。GetProcessId函数接受一个句柄作为参数,并返回该进程的PID。
326 0
|
API 调度
18-FreeRTOS内核控制
18-FreeRTOS内核控制
|
Linux Shell
Linux 基于flock命令实现多进程并发读写文件控制
Linux 基于flock命令实现多进程并发读写文件控制
461 0
|
Linux
多线程、多进程同时操作MMAP,会怎么样?(二)
多线程、多进程同时操作MMAP,会怎么样?
276 0
|
Android开发 数据安全/隐私保护 C++
多线程、多进程同时操作MMAP,会怎么样?(一)
多线程、多进程同时操作MMAP,会怎么样?
193 0
多线程、多进程同时操作MMAP,会怎么样?(一)