我正在写一个ncurses程序,并试图让它正确响应终端调整大小.虽然我可以在程序中正确读取终端尺寸,ncurses但似乎没有正确处理新尺寸.这是一个(有点冗长)示例程序:
#include <ncurses.h>
#include <string.h>
#include <signal.h>
#include <sys/ioctl.h>
void handle_winch(int sig){
struct winsize w;
ioctl(0, TIOCGWINSZ, &w);
COLS = w.ws_col;
LINES = w.ws_row;
wresize(stdscr, LINES, COLS);
clear();
mvprintw(0, 0, "COLS = %d, LINES = %d", COLS, LINES);
for (int i = 0; i < COLS; i++)
mvaddch(1, i, '*');
refresh();
}
int main(int argc, char *argv[]){
initscr();
struct sigaction sa;
memset(&sa, 0, sizeof(struct sigaction));
sa.sa_handler = handle_winch;
sigaction(SIGWINCH, &sa, NULL);
while(getch() != 27) {}
endwin(); …Run Code Online (Sandbox Code Playgroud)