微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取输入时 halfdelay() 和 cbreak() + timeout() 有什么区别?

如何解决获取输入时 halfdelay() 和 cbreak() + timeout() 有什么区别?

我正在用 C++ 编写一个带有 ncurses 的打字游戏,我注意到有 cbreak()halfdelay() 函数可以切换 ncurses 中的文本输入模式。

我知道 cbreak() 用于在读取字符时禁用行缓冲,而 cbreak()halfdelay()间的区别是 halfdelay()一个参数来阻塞 X 十分之一。

我很好奇如果我将 cbreak()timeout() 一起使用会怎样,它是否像 halfdelay() 一样工作?

我做了一个实验来看看它们的区别:

使用halfdelay()

#include <ncurses.h>
int main()
{
    initscr();
    halfdelay(10); // blocking for 1s
    getch();
    endwin();
}

使用 cbreak()timeout()

#include <ncurses.h>
int main()
{
    initscr();
    cbreak();
    timeout(1000); // blocking for 1s
    getch();
    endwin();
}

我发现这两种行为都在等待一个字符并立即退出程序,直到超过 1 秒,所以我想问一下它们在 ncurses 上是否有区别?

解决方法

halfdelay 例程用于半延迟模式。与cbreak非常相似,但在阻塞了十分之几秒后,如果没有输入任何内容,则返回ERR(错误流)。

您可以在此处找到有关它的更多信息:Link

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。