创建新信号或多路复用SIGALRM?

时间:2014-07-04 18:28:57

标签: c linux linux-kernel signals

我正在尝试编写一个基准测试,它接收来自内核的信号,告诉它调整其参数。我正在尝试研究主动或被动方法是否最有效。

在主动方法中,我使用setitimer定期设置警报并强制基准测试到目前为止的性能并重新调整自身。

在被动方法中,内核会定期监视进程,并在进程不良时发出信号。

由于我一直在使用setitimer功能,而且setitimer导致SIGALRM,我已经要求内核在被动方法中抛出SIGALRM。这一直很好。但是,现在我需要使用SIGALRM在特定的持续时间内运行基准测试。

是否可以通过多路复用SIGALRM来实现这两个目的 - 进行定时运行并终止重新调整。是否存在类似于setitimer的函数/系统调用,允许用户设置警报但使用自定义信号?

1 个答案:

答案 0 :(得分:1)

是。您想查看timer_create / timer_settime等系列电话。

timer_create的第二个参数是struct sigevent。其中的字段sigev_signo可以设置为在计时器到期时发送特定的信号编号。