我正在构建两个静态 c 库。每个库都有一个例程,需要在调用 mylib_init() 后每秒运行一次;
我使用 setitimer 在每个库中实现了这一点,它使用 ITIMER_REAL 资源和 SIGALRM 信号。
void Start1msTimer()
{
struct itimerval new;
memset(&new,0, sizeof(new));
new.it_interval.tv_sec=1;
new.it_value.tv_sec=1;
signal (SIGALRM, OneSecTimeout);
setitimer (ITIMER_REAL, &new,NULL);
}
好的,到目前为止一切正常。
现在我正在构建一个使用这两个库的示例应用程序,并且出现了冲突。我已经意识到一个应用程序只能为每个信号有一个处理程序,而 ITIMER_REAL 只能用于一个计时器,不能同时用于两者。所以很明显现在事情不正常了。
在我的每个库中实现计时对我来说有什么更好的方法?
一般来说,在库中包含任何信号处理程序是一个坏主意吗?