繁体   English   中英

C ++如何在有限的时间内等待键盘输入

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM