Tôi cố gắng để xử lý một tín hiệu thay đổi kích thước (SIGWINCH)Không thể xác định kích thước thiết bị đầu cuối với ncurses
void Server::resizeSignalHandler(int a)
{
signal(SIGWINCH, SIG_IGN);
endwin();
initscr();
refresh();
clear();
int x,y;
getmaxyx(stdscr, y, x);
wmove(upScreen, 0, 0);
wmove(downScreen, y/2, 0);
wresize(upScreen, y/2, x);
wresize(downScreen, y/2, x);
wclear(upScreen);
wclear(downScreen);
waddstr(upScreen, "test1");
waddstr(downScreen, "test2");
wrefresh(upScreen);
wrefresh(downScreen);
refresh();
signal(SIGWINCH, Server::resizeSignalHandler);
}
Server::Server()
{
//ncurses screen initialization
initscr();
if (!upScreen) {
upScreen = newwin(0, 0, 1, 1);
}
if (!downScreen) {
downScreen = newwin(0, 0, 1, 1);
}
//adjusting screen when user resize terminal
signal(SIGWINCH, Server::resizeSignalHandler);
//configuring screens
Server::resizeSignalHandler(0);
waddstr(Server::upScreen, "lalfasdfsafd as");
waddstr(downScreen, "supreme!");
wrefresh(Server::upScreen);
wrefresh(downScreen);
}
Khi tôi gỡ lỗi mã này, trong resizeSignalHandler var x, y là luôn luôn giống nhau (kích thước không thay đổi). Tôi cũng đã thử xác định kích thước với ioctl, nhưng không có gì thay đổi.
Tôi đã tìm ra rằng nhiều người trước tôi gặp vấn đề này http://www.mail-archive.com/[email protected]/msg11253.html Đôi khi, họ giải quyết (thay đổi/etc/profile; O (sic!)), Nhưng đôi khi không. Có cách nào thay thế cho mac os x terminal, có thể ncurses được dành riêng cho xterm và tương tự.
Bạn có thể làm cho OSX hạn cư xử như xterm nên đó không phải là vấn đề. Bạn có thực sự thử nghiệm trong thiết bị đầu cuối hoặc trong thuật ngữ giả của XCode không? – Geoffroy
Nó không thể được kiểm tra trong xcode. Trong terminal. – badeleux