ncurses终端大小

如何找到ncurses应用程序的终端宽度和高度?

void getmaxyx(WINDOW *win, int y, int x); 我相信…

另外,这可能会有所帮助……

在C中获得终端宽度?

ncurses应用程序通常处理SIGWINCH并使用带有TIOCGWINSZioctl来获取系统SIGWINCH的概念。 这可能被环境变量LINESCOLUMNS覆盖(参见use_env )。

鉴于此,当wgetch返回KEY_RESIZE (响应SIGWINCH )以给出stdscr的大小(表示整个终端的标准屏幕)时,ncurses全局变量LINESCOLS被更新为副作用。

您当然可以使用getmaxxgetmaxygetmaxyx来获取窗口的x和y坐标的一个或两个限制。 只有最后一个是标准的(和便携式)。

进一步阅读:

  • 处理SIGWINCH(resize事件) (ncurses FAQ)
  • is_term_resizedis_term_resizedresizeterm – 更改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_HSCR_W呢?

在initscr()之后,变量COLS,LINES被初始化为屏幕尺寸。

来源: NCURSES编程HOWTO

我不确定他们是否会在resize时获得更新。