我正在尝试对用户输入设置时间限制,因此如果将输入类型的时间超过2秒,则程序将终止。我想知道在C语言中是否有一种简单的方法可以做到这一点?
谢谢
答案 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,但它可以在不使用信号处理程序的情况下工作。