Kolik radku ma terminal
Alexandr Malusek
malusek na hroch.ujf.cas.cz
Sobota Březen 14 17:17:44 CET 1998
Michal Ludvig <mic na cybeteria.cz> writes:
> je mozny nejak jednoduse zjistit [subj] ??? Jednoduse znamena, ze nechci
> pouzivat [n]curses (jenom kvuli tyhle informaci). Slo by to prez
> getenv("LINES"), ale jak je to spolehlivy? (kdo to nastavuje a podle
> ceho?)
Tuto informaci uchovava terminalovy driver Linuxu. Od nej to ziskate
pres ioctl (viz ioctl(2)) s parametrem TIOCGWINSZ (viz ioctl_list(2)).
Priklad:
$ cat ws
#include <stdio.h>
#include <unistd.h>
#include <termios.h>
#include <sys/ioctl.h>
int main()
{
int err;
struct winsize win;
err = ioctl (STDIN_FILENO, TIOCGWINSZ, &win);
printf("ROWS = %d\tCOLS = %d\n", win.ws_row, win.ws_col);
return err;
}
To jsem samozrejme nevedel, ale vedel jsem ze pocet radku/sloupcu se
da nastavit/zjistit pomoci stty. Tak jsem si stahl
sh-utils-1.16-4.src.rpm a nasel jsem si, jak to dela stty. Overeni:
$ ./ws
ROWS = 24 COLS = 80
$ stty rows 15
$ ./ws
ROWS = 15 COLS = 80
Pozn.: Myslim, ze to neni prenositelne na kazdy Unix. Ohledne LINES,
... se podivejte na poznamku v stty(1) - napr. mc LINES vubec
nepouziva.
--
A. Malusek (malusek na ujf.cas.cz
UJF AV CR
Další informace o konferenci Linux