我创建了一个包含单个信号处理程序的程序来处理多个计时器。此计时器用于每 2ms、10ms 等调用一次特定任务。但它不起作用。谁能帮我这个:(
http://www.graphics-muse.org/wp/?p=868如何使用单个信号处理程序解决此多个Linux计时器
您可以实现以下内容:
-
使用
sigaction
设置信号处理程序,确保处理程序的签名void handler(int, siginfo_t*, void*)
。 -
创建许多带有
timer_create
的计时器,每个计时器指定不同的sigevent
结构(特别是sigev_value
)。 -
在信号处理程序中,处理
siginfo_t
结构并使用以下任一字段来确定哪个计时器过期si_int
、si_ptr
(其中一个将对应于步骤 2 中的sigev_value
)或使用si_timerid
。当然,如果使用si_timerid
字段,则无需在步骤 2 中定义sigev_value
。
这样,信号处理程序可以识别哪个计时器触发了信号,并可以采取适当的操作。