当我调整终端窗口的大小时,以下程序退出。为什么以及如何阻止它?
#include <ncurses.h>
#include <unistd.h>
int main () {
initscr ();
printw ("Some text\n");
refresh ();
sleep (100);
endwin ();
return 0;
}
我在这里找到了答案
当终端调整大小时,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;
}
您需要处理 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
// ...
}