VCS - Linux手册页
Linux程序员手册 第4部分
更新日期: 2020-06-09
名称
vcs,vcsa-虚拟控制台内存
说明
/ dev / vcs0是主要编号为7且次要编号为0的字符设备,通常具有0644模式和所有权root:tty。它指的是当前显示的虚拟控制台终端的内存。
/ dev / vcs [1-63]是虚拟控制台终端的字符设备,它们的主要编号为7,次要编号为1至63,通常为0644模式,所有权为root:tty。 / dev / vcsa [0-63]是相同的,但是使用了无符号short s(以主机字节顺序),该s包含属性,并以四个字节作为前缀来给出屏幕尺寸和光标位置:行,列,x,y。 (在屏幕的左上角x = y =0。)
加载512个字符的字体时,可以通过在/ dev / tty [1-63]上应用ioctl(2)VT_GETHIFONTMASK操作(在Linux内核2.6.18及更高版本中可用)来获取第9位位置;该值以第三个ioctl(2)参数指向的无符号short返回。
这些设备代替了ioctl_console(2)的screendump ioctl(2)操作,因此系统管理员可以使用文件系统权限来控制访问。
前八个虚拟控制台的设备可以通过以下方式创建:
for x in 0 1 2 3 4 5 6 7 8; do
mknod -m 644 /dev/vcs$x c 7 $x;
mknod -m 644 /dev/vcsa$x c 7 $[$x+128];
done
chown root:tty /dev/vcs*
不支持ioctl(2)请求。
文件
/ dev / vcs [0-63]
/ dev / vcsa [0-63]
版本
在Linux内核的1.1.92版本中引入。
示例
您可以通过切换到vt1并键入vt3,在vt3上进行屏幕转储
cat /dev/vcs3 >foo
请注意,输出不包含换行符,因此可能需要进行一些处理,例如
fold -w 81 /dev/vcs3 | lpr
或(恐怖片)
setterm -dump 3 -file /proc/self/fd/1
/ dev / vcsa0设备用于盲文支持。
该程序在第二个虚拟控制台的光标下显示字符和屏幕属性,然后在其中更改背景色:
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/vt.h>
int
main(void)
{
int fd;
char *device = "/dev/vcsa2";
char *console = "/dev/tty2";
struct {unsigned char lines, cols, x, y;} scrn;
unsigned short s;
unsigned short mask;
unsigned char attrib;
int ch;
fd = open(console, O_RDWR);
if (fd < 0) {
perror(console);
exit(EXIT_FAILURE);
}
if (ioctl(fd, VT_GETHIFONTMASK, &mask) < 0) {
perror("VT_GETHIFONTMASK");
exit(EXIT_FAILURE);
}
(void) close(fd);
fd = open(device, O_RDWR);
if (fd < 0) {
perror(device);
exit(EXIT_FAILURE);
}
(void) read(fd, &scrn, 4);
(void) lseek(fd, 4 + 2*(scrn.y*scrn.cols + scrn.x), SEEK_SET);
(void) read(fd, &s, 2);
ch = s & 0xff;
if (s & mask)
ch |= 0x100;
attrib = ((s & timask) >> 8);
printf("ch=0x%03x attrib=0x%02x\n", ch, attrib);
s ha= 0x1000;
(void) lseek(fd, -2, SEEK_CUR);
(void) write(fd, &s, 2);
exit(EXIT_SUCCESS);
}
另外参见
ioctl_console(2),tty(4),ttyS(4),gpm(8)
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。

