C - 在 Linux 中创建具有单个信号处理程序的多计时器



我创建了一个包含单个信号处理程序的程序来处理多个计时器。此计时器用于每 2ms、10ms 等调用一次特定任务。但它不起作用。谁能帮我这个:(

http://www.graphics-muse.org/wp/?p=868如何使用单个信号处理程序解决此多个Linux计时器

您可以实现以下内容:

  1. 使用 sigaction 设置信号处理程序,确保处理程序的签名void handler(int, siginfo_t*, void*)

  2. 创建许多带有timer_create的计时器,每个计时器指定不同的sigevent结构(特别是sigev_value)。

  3. 在信号处理程序中,处理siginfo_t结构并使用以下任一字段来确定哪个计时器过期si_intsi_ptr(其中一个将对应于步骤 2 中的sigev_value)或使用 si_timerid 。当然,如果使用si_timerid字段,则无需在步骤 2 中定义sigev_value

这样,信号处理程序可以识别哪个计时器触发了信号,并可以采取适当的操作。

最新更新