我有一些问题,所以我问。 我在linux中制作关于计时器的项目,但它会出错。 我想知道有关删除计时器的信息。
我使用了timer_settime和clear timer的方法。 但它没有删除计时器。
如何在linux中删除计时器? timer_delete不起作用。
等) 它是创建代码。
sa.sa_flags = SA_SIGINFO;
sa.sa_sigaction = timer_callback;
sigaddset(&sa.sa_mask, sig_no);
if (sigaction(sig_no, &sa, NULL) == -1) {
L_ERROR("error in sigaction.");
return;
}
sev.sigev_notify = SIGEV_SIGNAL;
sev.sigev_signo = sig_no;
if (timer_create(CLOCK_REALTIME, &sev, &timerid) == -1) {
L_ERROR("error in timer_create.");
return;
}
// Start the timer
its.it_value.tv_sec = second;
L_ERROR("second = %d\n", second);
its.it_value.tv_nsec = 0;
its.it_interval.tv_sec = its.it_value.tv_sec;
its.it_interval.tv_nsec = its.it_value.tv_nsec;
if (timer_settime(timerid, 0, &its, NULL) == -1) {
L_ERROR("error in timer_settime.");
return;
}
是删除代码。
sigemptyset(&sa.sa_mask);
sa.sa_handler = SIG_IGN;
if(sigaction(sig_no, &sa, NULL) == -1)
{
L_ERROR("[TimerDebugging] Fail to sigaction(), SIG_IGN, sig_no=%d", sig_no);
return;
}
L_ERROR("[TimerDebugging] sigaction(), SIG_IGN, sig_no=%d", sig_no);
its.it_value.tv_sec = 0;
its.it_value.tv_nsec = 0L;
its.it_interval.tv_sec = 0;
its.it_interval.tv_nsec = 0;
if(timer_settime(timer_id, 0, &its, NULL) == -1)
{
L_ERROR("[TimerDebugging] timer_settime() -for disarm timer- sig_no=%d error", sig_no);
return;
}
result = timer_delete(timer_id);
L_ERROR("[TimerDebugging] timer_delete() result=%d", result);
if( result < 0 )
{
L_ERROR("timer_delete() error, errno=%d", result);
return;
}
我们使用了多个定时器信号。
谢谢你的回复。