在我的Ncurses应用程序中,我具有用于读取键盘输入的单独线程以及用于处理SIGHUP的单独信号处理功能:
void terminalDimensionsChangeHandler(int sig_num)
{
clear();
endwin();
refresh();
windowsManagerGlobal.lock()->redrawWindows();
keyStrokeGlobal.lock()->refreshBuffers();
}
一切正常,直到我更改端子尺寸,然后getch返回无效值。 每次处理SIGHUP时,我都会使用新的尺寸和内容重新绘制窗口,并且屏幕内容看起来正确。但是,当我按下键盘上的任何键时,我的getch()线程始终返回数字为154的char,这不是我所按的。我试图刷新输入缓冲区,但没有帮助,有什么想法吗?谢谢。