ncurses终端大小
如何找到ncurses应用程序的终端宽度和高度?
void getmaxyx(WINDOW *win, int y, int x);
我相信…
另外,这可能会有所帮助……
在C中获得终端宽度?
ncurses应用程序通常处理SIGWINCH
并使用带有TIOCGWINSZ
的ioctl
来获取系统SIGWINCH
的概念。 这可能被环境变量LINES
和COLUMNS
覆盖(参见use_env
)。
鉴于此,当wgetch
返回KEY_RESIZE
(响应SIGWINCH
)以给出stdscr
的大小(表示整个终端的标准屏幕)时,ncurses全局变量LINES
和COLS
被更新为副作用。
您当然可以使用getmaxx
, getmaxy
和getmaxyx
来获取窗口的x和y坐标的一个或两个限制。 只有最后一个是标准的(和便携式)。
进一步阅读:
- 处理SIGWINCH(resize事件) (ncurses FAQ)
-
is_term_resized
,is_term_resized
,resizeterm
– 更改curses终端大小
我正在使用此代码:
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);
那么使用SCR_H
和SCR_W
呢?
在initscr()之后,变量COLS,LINES被初始化为屏幕尺寸。
来源: NCURSES编程HOWTO
我不确定他们是否会在resize时获得更新。