我正在尝试对用户输入设置时间限制,因此如果输入输入的时间超过 2 秒,则程序将终止。我想知道在 C 语言中是否有一种简单的方法可以做到这一点?
谢谢
您可以通过信号处理来实现这一点,您必须在代码中处理 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
}
您可以使用 select 超时,检查标准输入。因此,如果 select 返回一个空的 fd 集,您就知道超时已过期,如果它返回带有 stdin 的集,那么您再次循环并继续读取您的输入。
不幸的是,这种方法不能让您轻松地直接读取一个 int,但它可以在不使用信号处理程序的情况下工作。