2012-10-11 60 views
0

我想使用POSIX計時器,但我的代碼無法運行。POSIX計時器:無效的參數

timer_t id_timer_; 

// some code. timer_create(), etc. 

void timerPeriod (unsigned long sec, unsigned long nsec) 
{ 
    struct itimerspec myperiod; 
    myperiod.it_interval.tv_sec = sec; 
    myperiod.it_interval.tv_nsec = nsec; 
    myperiod.it_value.tv_sec = sec; 
    myperiod.it_value.tv_nsec = nsec; 

    if (timer_settime (&id_timer_, 0, &myperiod, 0)) 
    perror("timer_settime"); 
} 

它返回timer_settime: Invalid argument,而參數看起來不錯。

我也試過timer_settime(id_timer_, 0, &myperiod, 0)(不&id_timer_之前),我認爲這是使用timer_settime()的好方法:分段錯誤...

任何線索?

+0

您需要先創建時使用'timer_create'

更多信息 –

回答

0

在公共秩序創建計時器後,struct sigaction必須正確設置。

struct sigaction sa; 
sa.sa_flags = SA_SIGINFO; 
sa.sa_sigaction = your_handler; 

在我前面的代碼,sa_flags設置爲0,而不是SA_SIGINFO。在kernel.org