3

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

谢谢

4

2 回答 2

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
}
于 2013-03-12T04:04:54.480 回答
0

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

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

于 2013-03-12T08:38:16.577 回答