C 对用户输入设置时间限制

C 对用户输入设置时间限制,c,input,C,Input,我试图对用户输入设置一个时间限制,因此如果用户输入的时间超过2秒,程序将终止。我想知道在C语言中是否有一种简单的方法可以做到这一点 谢谢您可以通过信号处理来实现这一点,您必须在代码中处理SIGALARM信号 void AlrmSigHnd(int signo) { exit(0); } int main() { void(*SigHnd)(int); SigHnd = AlrSigHnd; signal(SIGALRM,SigHnd); alarm(2); // AlrmSigHnd will

我试图对用户输入设置一个时间限制,因此如果用户输入的时间超过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来检查stdin。因此,如果select返回一个空的fd集,您知道超时已经过期,如果它返回带有stdin的集,则再次循环并继续读取输入


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

您希望读取什么?如果超过一个字符:距离读入第一个或最后一个字符还有2秒?我想读入一个多于一个数字的intAn
int
?如果是,你可能想回答我上一个问题的第二部分?我想读一些类似于2(空格)3(空格)5的东西,我用了这个,但有错误。。它表示“出口(0)的不兼容隐式声明”。。你知道可能出了什么问题吗?我已将signal.h标题作为well@user2159166嘿,包括stdlib.h