如何在c中定义函数的超时

时间:2013-07-07 11:48:12

标签: c

我试图在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.

 }

2 个答案:

答案 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;
    //...
}

如果你有很多循环,只需将上面的代码放在其中。