当我调整终端窗口的大小时,以下程序退出。为什么以及如何阻止它?
#include <ncurses.h>
#include <unistd.h>
int main () {
initscr ();
printw ("Some text\n");
refresh ();
sleep (100);
endwin ();
return 0;
}
答案 0 :(得分:2)
我找到了答案here
当终端调整大小时,SIGWINCH
信号会升起并退出程序。
以下是解决方案:
#include <ncurses.h>
#include <unistd.h>
#include <signal.h>
int main () {
initscr ();
signal (SIGWINCH, NULL);
printw ("Some text\n");
refresh ();
sleep (100);
endwin ();
return 0;
}
答案 1 :(得分:0)
您需要处理SIGWINCH信号:
#include <signal.h>
/* resizer handler, called when the user resizes the window */
void resizeHandler(int sig) {
// update layout, do stuff...
}
int main(int argc, char **argv) {
signal(SIGWINCH, resizeHandler);
// play with ncurses
// ...
}