如何找到终端宽度& ncurses应用程序的高度?
答案 0 :(得分:16)
答案 1 :(得分:6)
ncurses应用程序通常处理SIGWINCH
并使用ioctl
和TIOCGWINSZ
来获取系统屏幕大小的概念。这可能会被环境变量LINES
和COLUMNS
覆盖(请参阅use_env
)。
鉴于此,当wgetch
返回KEY_RESIZE
时,ncurses全局变量LINES
和COLS
会更新为副作用(响应SIGWINCH
)给出stdscr
的大小(代表整个终端的标准屏幕)。
您当然可以使用getmaxx
,getmaxy
和getmaxyx
来获取窗口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_H
和SCR_W
?
答案 4 :(得分:0)