This question already has answers here:
Closed 6 years ago.
How to set a timeout for a function in C?
(5个答案)
我试图用c语言实现一个超时机制。我想让一个特定的函数执行15秒。如果执行时间超过15秒,程序应该终止。
如:
(5个答案)
我试图用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.
}
最佳答案
既然你评论说这是一个强制超时,而且你在Unix上。。。
1)在初始化中,为SIGALRM信号声明一个信号处理程序。此信号处理程序将调用longjmp()
。
2)在进入函数之前,调用setjmp()
设置跳转点(对于longjmp()
),并为超时时间安装alarm()
。
3)如果setjmp()
返回0,则调用somefunction()。如果它返回非零(当您调用lonjmp时可以控制它),您就知道您已经超时了。
“手动报警”,“手动长jmp”,“手动设置jmp”,“手动信号”了解更详细的信息。