我试图在c中实现超时机制。我想要一个特定的函数执行15秒。如果执行时间超过15秒,程序应该终止。
例如:
void somefunction()
{
//------------
}
void main()
{
somefunction();//this function should have execution time of 30 seconds.
//If it takes more than 30 seconds it should timeout and pop and error.
}
答案 0 :(得分:3)
由于您已经评论说这是一个强有力的超时并且您在Unix上...
1)在初始化中,声明SIGALRM信号的信号处理程序。此信号处理程序将调用longjmp()
。
2)在输入您的功能之前,请致电setjmp()
设置跳转点(longjmp()
),并在超时期限内安装alarm()
。
3)如果setjmp()
返回0,请调用somefunction()。如果它返回非零(你可以在调用lonjmp时控制它),你知道你已经超时了。
" man alarm"," man longjmp"," man setjmp"," man signal"更深入的细节。
答案 1 :(得分:0)
我建议包含“time.h”然后在你的函数中编写一个看起来像这样的简单代码:
#define FUNC_EXEC_TIME 15
void someFunction() {
if(clock() > FUNC_EXEC_TIME * 1000) return;
//...
}
如果你有很多循环,只需将上面的代码放在其中。