[英]C++ How to wait for keyboard input for a limited time
我希望我的控制台应用程序停止并等待用户按下一个键。 如果在限定的时间(例如2秒钟)之后没有键盘输入,则应该恢复执行。
我知道没有解决方案可移植到所有实现中,但是至少有简单的解决方案吗?
有些帖子喜欢这一个或这一个处理类似的问题,他们似乎,但不提供回答这个特定问题。
如果我可以使用ncurses(我不能),则可以使用getch()
和timeout()
函数执行以下操作:
#include <ncurses.h>
int main()
{
initscr(); // Start curses mode
cbreak(); // Turn off line buffering
timeout(2000); // Wait 2000 ms for user input
while (true) {
addstr("You have 2 sec. to press 'q', otherwise ...\n");
refresh();
int inKey = getch();
if (inKey == 'q') break;
}
endwin();
return 0;
}
一种方法是使用低级read()(假设您在Posix上)与超时信号耦合在一起。 由于read()将在信号处理后与EINTR一起退出,因此您将知道已达到超时。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.