vcs(4) Device Drivers Manual vcs(4) NAZWA vcs, vcsa - pamiec konsoli wirtualnej OPIS /dev/vcs0 jest urzadzeniem znakowym o numerze glownym 7 i numerze pobocznym 0, najczesciej z prawami dostepu 0644 i wlascicielem okreslonym jako root:tty. Odnosi sie do pamieci obecnie widocznego terminala wirtualnej konsoli. /dev/vcs[1-63] to urzadzenia znakowe terminali wirtualnych konsoli, majace numer glowny 7 i numery poboczne od 1 do 63, najczesciej z prawami dostepu 0644 i wlasnoscia okreslona jako root:tty. /dev/vcsa[0-63] sa tym samym, ale uzywaja liczb typu unsigned short zawierajacych atrybuty oraz poprzedzonych czterema bajtami, zwracajacymi rozmiary ekranu i pozycje kursora: wiersze, kolumny, x, y. (x = y = 0 w lewym gornym rogu ekranu). Kiedy ladowana jest czcionka 512-znakowa, pozycje dziewiatego bitu mozna pobrac za pomoca operacji ioctl(2) VT_GETHIFONTMASK (dostepnej od Linuksa 2.6.18) zastosowanej na /dev/tty[1-63]. Wartosc zwracana jest we wskazniku do typu unsigned short przekazywanym jako trzeci argument wywolania systemowego ioctl(2). Opisywane urzadzenia zastepuja operacje ioctl(2) zrzucajace zawartosc ekranu z ioctl_console(2), wiec administrator systemu moze kontrolowac uprawnienia przy uzyciu praw dostepu do plikow. Urzadzenia dla pierwszych osmiu konsoli wirtualnych mozna stworzyc poleceniami: 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* Nie sa wspierane zadne odwolania ioctl(2). PLIKI /dev/vcs[0-63] /dev/vcsa[0-63] WERSJE Wprowadzone w Linuksie 1.1.92. PRZYKLADY Zrzut ekranu na vt3 mozna wykonac przez przelaczenie na vt1 i wpisanie cat /dev/vcs3 >foo Prosze zauwazyc, ze wynik nie bedzie zawieral znakow nowego wiersza, wiec konieczne moze byc pewne zmodyfikowanie go np. fold -w 81 /dev/vcs3 | lpr lub (ohyda) setterm -dump 3 -file /proc/self/fd/1 Urzadzenie /dev/vcsa0 jest wykorzystywane przy wsparciu dla alfabetu Braille'a. Ponizszy program wyswietla aktualne atrybuty znakow i ekranu w miejscu kursora na drugiej wirtualnej konsoli, a nastepnie zmienia tam kolor tla: #include #include #include #include #include #include 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 & ~mask) >> 8); printf("ch=%#03x attrib=%#02x\n", ch, attrib); s ^= 0x1000; (void) lseek(fd, -2, SEEK_CUR); (void) write(fd, &s, 2); exit(EXIT_SUCCESS); } ZOBACZ TAKZE ioctl_console(2), tty(4), ttyS(4), gpm(8) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Pawel Olszewski , Robert Luberda i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.06 31 pazdziernika 2023 r. vcs(4)