Sto cercando di gestire un segnale di ridimensionamento (SIGWINCH)Impossibile determinare la dimensione del terminale con 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);
}
Quando mi è stato debug di questo codice, in resizeSignalHandler var x, y erano sempre gli stessi (dimensione non è cambiata). Ho anche provato a determinare la dimensione con ioctl, ma non è cambiato nulla.
ho capito che molte persone prima di me avevano questo problema http://www.mail-archive.com/[email protected]/msg11253.html A volte, hanno risolto che (modificando/etc/profile; O (sic)!), Ma a volte non. C'è qualche alternativa a mac os x terminal, forse ncurses è dedicato a xterm e simili.
È possibile effettuare termine OSX si comporta come xterm in modo che non è questo il problema. Stai davvero provando nel terminale o nel finto termine di XCode? – Geoffroy
Non può essere testato in xcode. Nel terminale. – badeleux