ncurses终端大小

时间:2009-11-28 08:11:36

标签: c ncurses

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

5 个答案:

答案 0 :(得分:16)

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

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

Getting terminal width in C?

答案 1 :(得分:6)

ncurses应用程序通常处理SIGWINCH并使用ioctlTIOCGWINSZ来获取系统屏幕大小的概念。这可能会被环境变量LINESCOLUMNS覆盖(请参阅use_env)。

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

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

进一步阅读:

答案 2 :(得分:2)

我正在使用此代码:

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);

答案 3 :(得分:0)

如何使用SCR_HSCR_W

答案 4 :(得分:0)

  

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

来源:NCURSES Programming HOWTO

我不确定他们是否会在调整大小时获得更新。