我正在创建一个ncurses程序,该程序使用AppKit读取系统范围的按键。为了清除我在运行程序时在命令行上累积的文字墙,我在退出程序之前执行此代码行。
while((c = getch()) != '\n' && c != EOF) {}
我的问题是,是否有更有效的方法来解决此问题。例如,在程序执行时禁用命令行输入。
编辑:
我进行了一些测试,但我的问题似乎源于usleep而不是ncurses或AppKit。这是一个例子:
#include <unistd.h>
int main() {
usleep(5000000);
return 0;
}
最佳答案
在tcflush(STDIN_FILENO, TCIFLUSH)
之前尝试exit()
。
根据tcflush(3)
:
int tcflush(int fd, int queue_selector);
tcflush()
根据fd
的值,丢弃写入由queue_selector
引用但未发送的对象的数据,或接收但不读取的数据:
TCIFLUSH :
刷新已接收但未读取的数据。
TCOFLUSH :
刷新已写入但未传输的数据。
TCIOFLUSH:
刷新接收到但未读取的数据,以及写入但未传输的数据。