2011-04-05 141 views
0

我正在创建一个计时器。结构是:timer_create和timer_settime生成分段错误

struct my_timer 
{ 
    unsigned int ip_address; 
    timer_t timer; 
}; 

现在ip_address被初始化。

之后,当我尝试通过“timer_create”创建计时器时,它抛出了分段错误。

如果我之前没有初始化ip_address,然后创建定时器,那么定时器已成功创建。

任何人都可以在这里帮助,至于为什么它发生?

基本上我想ip_address找到哪个定时器必须稍后停止。

+2

我不知道。显示更多代码?我唯一的(牵强)预感是你可能会使用联合而不是结构。 – sehe 2011-04-05 12:15:53

+0

我的预感是你没有把正确的参数传递给'timer_create'。向我们展示代码。这个问题目前的形式是无法回答的... – 2011-04-05 12:34:36

+0

嗨,我通过初始化ip_address在timer_create周围得到了周围的错误...但是现在问题是在停止计时器时,我尝试执行timer_settime。 – himanshu 2011-04-05 12:44:56

回答

0

由于documented,timer_create(2)不包含任何含有IP地址的参数,也不包含timer_t加上用户指定的其他部分的结构。

您是否启用了编译器警告?我想你只是用不合适的参数来调用这些函数,但是如果没有看到你的代码,就无法确定。

+0

大家好,谢谢你的回复..我终于得到了问题解决,在timer_settime停止计时器我错误地传递了计时器ID,而不是指针的计时器ID ....现在工作正常。 .. :) – himanshu 2011-04-05 14:18:43

+0

我不明白。 timer_settime的文档说它需要一个timer_t作为它的第一个参数。你是说你现在传递了一个timer_t *,它比传递一个timer_t更好吗?如果是这样,那么您的系统是否是非标准的,或者是否有文档与Google上timer_settime的热门点击有所不同? – 2011-04-05 23:17:00

+0

对不起,这里的“stop_timer”函数的声明是stop_timer(timer_t * timerid)。 stop_timer函数获取指向定时器ID的指针,但在该函数中,我错误地发送了定时器ID本身。在stop_timer中,我使用timer_settime(* timerid,0,&its,NULL)。所以这意味着我只在timer_settime中发送timer_t值。 – himanshu 2011-04-06 05:22:37