对用户输入设置时间限制

时间:2013-03-12 03:55:01

标签: c input

我正在尝试对用户输入设置时间限制,因此如果将输入类型的时间超过2秒,则程序将终止。我想知道在C语言中是否有一种简单的方法可以做到这一点?

谢谢

2 个答案:

答案 0 :(得分:4)

您可以通过信号处理实现此目的,您必须在代码中处理SIGALARM信号。

void AlrmSigHnd(int signo)
{
exit(0);
}
int main()
{
void(*SigHnd)(int);
SigHnd = AlrSigHnd;

signal(SIGALRM,SigHnd);
alarm(2); // AlrmSigHnd will called after 2 seconds.
scanf("%d",&i);  
alarm(0); // Cancel signal registration
}

答案 1 :(得分:0)

您可以使用select超时,检查stdin。因此,如果select返回一个空的fd set,你知道超时已经过期,如果它返回带有stdin的set,那么你再次循环并继续读取你的输入。

不幸的是,这种方法不允许您直接读取一个int,但它可以在不使用信号处理程序的情况下工作。