首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ncurses中的nodelay()和cbreak()有什么不同?

ncurses中的nodelay()和cbreak()有什么不同?
EN

Stack Overflow用户
提问于 2019-05-22 03:16:13
回答 1查看 832关注 0票数 1

ncurses中的nodelay()cbreak()有什么不同?为什么要使用这些函数,因为我们有getch()!如果我理解的话,getch()允许在用户点击按键后直接获取密钥。所以nodelaycbreak是没用的,不是吗?

EN

回答 1

Stack Overflow用户

发布于 2019-05-22 03:20:59

它们是两个完全不同的功能。

从文档中:

通常,tty驱动程序会缓冲键入的字符,直到键入换行符或回车符。cbreak例程禁用行缓冲和擦除/删除字符处理(中断和流控制字符不受影响),使用户键入的字符立即可供程序使用。nocbreak例程将终端返回到正常(熟食)模式。

..。

nodelay选项使getch成为非阻塞调用。如果没有准备好的输入,则getch返回ERR。如果禁用(bf为FALSE),getch将等待,直到按下某个键。

因此,如果您想要禁用行缓冲,则使用cbreak,您可能出于多种原因想要禁用行缓冲。其一是避免每次打印输出后都必须使用fflush(stdout)。启用行缓冲后,在打印换行符之前,通常不会在屏幕上显示打印输出。

nodelay的描述是不言自明的。getch不会等待,而是立即返回,无论是否按下任何键。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56245062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档