VCS(4)

名前
vcs, vcsa - 仮想コンソールメモリ(virtual console memory)

説明
/dev/vcs0    はメジャーナンバー(major number) 7 マイナーナンバー
(minor number) 0 で、普通はモード 0644 オーナー root.tty のキャラクター デバイス(character device)である。このデバイスファイル(device file)は 現在表示されている仮想コンソール端末のメモリを参照する。

/dev/vcs[1-63] は 仮想コンソール端末のための キャラクターデバイ スで、メジャーナンバー 7 マイナーナンバー 1 から 63、通常、モード 0644 オーナー root.tty である。/dev/vcsa[0-63] は /dev/vcs[1-63] と同様であるが、属性、スクリーンのサイズ・カーソ ルの位置を表す 4 バイトのプレフィックス: lines, columns,x, y (x =y = 0 が画面の左上) を 含んでいる。

これらは console(4) の screendump ioctls を代替する、従っ て、システム管理者は ファイルシステムパーミッション(file system permission)を使ってアクセスをコントロールできる。

最初の 8 つの仮想端末のためのデバイスは次のようにして作る事ができる :
	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() による要求はサポートされない。

例
vt1 に切替えて vt3 のスクリーンダンプを実行するには、cat /dev/vcs3 >foo とタイプすればいい。気を付けて欲しいのは、この出力は改行文字を 含んでいないという事である、従って、fold -w 81 /dev/vcs3 | lpr や (ぞっとするが) setterm -dump 3 -file /proc/self/fd/1 のような 何らかの処理が要求される。 以下のプログラムは第二仮想コンソールのカーソルの下のスクリーン属性と文字 を表示し、次にそこの背景色を変更する。:
	#include <unistd.h>
	#include <stdio.h>
	#include <fcntl.h>
	void main()
	{	int fd;
		struct {char lines, cols, x, y;} scrn;
		char ch, attrib;
		fd = open("/dev/vcsa2", O_RDWR);
		(void)read(fd, &scrn, 4);
		(void)lseek(fd, 4 + 2*(scrn.y*scrn.cols + scrn.x), 0);
		(void)read(fd, &ch, 1);
		(void)read(fd, &attrib, 1);
		printf("ch='%c' attrib=0x%02x\n", ch, attrib);
		attrib ^= 0x10;
		(void)lseek(fd, -1, 1);
		(void)write(fd, &attrib, 1);
	}

ファイル
/dev/vcs[0-63]
/dev/vcsa[0-63]

著者
Andries Brouwer <aeb@cwi.nl>

履歴
Linux カーネルバージョン 1.1.92 で導入された。

関連項目
console(4), tty(4), ttys(4), selection(1)

翻訳者
石川 睦 <ishikawa@linux.or.jp>