0

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

 }
4

2 回答 2

3

既然您评论说这是一个强制超时并且您在 Unix 上...

1) 在初始化时,为 SIGALRM 信号声明一个信号处理程序。此信号处理程序将调用longjmp().

2)就在进入你的函数之前,调用setjmp()设置跳转点(for ),并为你的超时时间longjmp()安装一个。alarm()

3) 如果setjmp()返回 0,调用你的 somefunction()。如果它返回非零值(您可以在调用 lonjmp 时对其进行控制),您就知道您已经超时。

“man alarm”、“man longjmp”、“man setjmp”、“man signal”以获得更详细的信息。

于 2013-07-07T11:59:46.217 回答
0

我建议包含“time.h”,然后在你的函数中编写一个如下所示的简单代码:

#define FUNC_EXEC_TIME 15

void someFunction() {
    if(clock() > FUNC_EXEC_TIME * 1000) return;
    //...
}

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

于 2013-07-07T12:11:03.537 回答