размер терминала ncurses - PullRequest
       14

размер терминала ncurses

14 голосов
/ 28 ноября 2009

Как узнать ширину терминала и высоту приложения ncurses?

Ответы [ 5 ]

16 голосов
/ 28 ноября 2009
6 голосов
/ 23 июля 2016

ncurses-приложения обычно обрабатывают SIGWINCH и используют ioctl с TIOCGWINSZ, чтобы получить представление системы о размере экрана. Это может быть переопределено переменными среды LINES и COLUMNS (см. use_env).

Учитывая, что глобальные переменные ncurses LINES и COLS обновляются как побочный эффект, когда wgetch возвращает KEY_RESIZE (в ответ на SIGWINCH), чтобы задать размер stdscr (стандартный экран, представляющий весь терминал).

Вы, конечно, можете использовать getmaxx, getmaxy и getmaxyx, чтобы получить один или оба ограничения для x- и ординаты окна. Только последний является стандартным (и переносным).

Дополнительное чтение:

2 голосов
/ 07 апреля 2014

Я использую этот код:

struct winsize size;
if (ioctl(0, TIOCGWINSZ, (char *) &size) < 0)
    printf("TIOCGWINSZ error");
printf("%d rows, %d columns\n", size.ws_row, size.ws_col);
0 голосов
/ 27 июля 2016

переменные COLS, LINES инициализируются до размеров экрана после initscr ().

Источник: NCURSES Программирование HOWTO

Я не уверен, обновляются ли они при изменении размера.

0 голосов
/ 28 ноября 2009

Как насчет использования SCR_H и SCR_W?

...