gpt4 book ai didi

c - ncurses 中的 nodelay() 和 cbreak() 有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-04 04:11:56 27 4
gpt4 key购买 nike

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

最佳答案

它们是两个完全不同的函数。

来自文档:

Normally, the tty driver buffers typed characters until a newline or carriage return is typed. The cbreak routine disables line buffering and erase/kill character-processing (interrupt and flow control characters are unaffected), making characters typed by the user immediately available to the program. The nocbreak routine returns the terminal to normal (cooked) mode.

...

The nodelay option causes getch to be a non-blocking call. If no input is ready, getch returns ERR. If disabled (bf is FALSE), getch waits until a key is pressed.

所以 cbreak 是如果你想禁用行缓冲,你可能出于多种原因需要它。一种是避免在每次打印输出后必须使用 fflush(stdout)。启用行缓冲后,打印输出通常在屏幕上不可见,直到打印换行符。

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

关于c - ncurses 中的 nodelay() 和 cbreak() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56245062/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com