curses中的halfdelay功能有什么作用?

时间:2011-02-22 11:24:29

标签: c curses

我正在尝试理解以下C程序:

#include <curses.h> 

int main() {
    int i; 
    initscr(); 
    halfdelay(5);
    for (i=0; i < 5; i++) 
        getch(); 
    endwin();
}

但我无法理解它。我理解initscr()初始化当前屏幕,getch()正在等待用户输入解锁当前终端,但循环和halfdelay()在这里完成了什么?

2 个答案:

答案 0 :(得分:6)

halfdelay(n);设置一个输入模式,其中getch函数等待n十分之一秒(在您的示例程序中,半秒),以便用户输入内容。 getch返回按键,除非计时器过去,在这种情况下它会返回ERR。可以使用cbreak()nocbreak()再次关闭此模式。

这可以在代码中使用,例如,要求用户进行确认,但如果他们在特定时间范围内没有回复,则默认为某些值。

答案 1 :(得分:0)

halfdelay用于禁用字符缓冲,50秒检查用户是否不活动。

此示例从用户输入中读取5个字符。如果用户处于非活动状态50秒,则getch返回ERR,并将errno设置为EINTR。

查看详细信息therethere