C/C++使用信号实现超时功能
程序员文章站
2024-01-13 20:10:34
...
若教眼底无离恨
不信人间有白头
Python可以通过装饰器实现函数的超时,C/C++就得想点别的办法了,可以借助一个操作系统的信号机制。
网上资料很多,这里我直接放代码,一看就懂,其实就调用了两个系统调用。
#include <signal.h>
#include <cstdio>
#include <unistd.h>
void handle(int sig) {
printf("The signal(%d).\n", sig);
}
int main() {
signal(SIGALRM, handle);
alarm(5);
sleep(80);
alarm(0);
sigrelse(SIGALRM);
printf("Quit\n");
return 0;
}
输出:
The signal(14).
Quit
也就是时间到了以后,执行信号处理函数handle(),然后就回到sigrelse(SIGALRM)清除信号。
很简单很实用2333。