terminalresize时,Ncurses程序将退出

当我调整我的terminal窗口,下面的程序退出。 为什么以及如何阻止它?

#include <ncurses.h> #include <unistd.h> int main () { initscr (); printw ("Some text\n"); refresh (); sleep (100); endwin (); return 0; } 

Solutions Collecting From Web of "terminalresize时,Ncurses程序将退出"

我在这里找到了答案

当终端调整大小时, 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 // ... }