我正在尝试编写一个基准测试,它接收来自内核的信号,告诉它调整其参数。我正在尝试研究主动或被动方法是否最有效。
在主动方法中,我使用setitimer
定期设置警报并强制基准测试到目前为止的性能并重新调整自身。
在被动方法中,内核会定期监视进程,并在进程不良时发出信号。
由于我一直在使用setitimer
功能,而且setitimer
导致SIGALRM
,我已经要求内核在被动方法中抛出SIGALRM
。这一直很好。但是,现在我需要使用SIGALRM
在特定的持续时间内运行基准测试。
是否可以通过多路复用SIGALRM
来实现这两个目的 - 进行定时运行并终止和重新调整。是否存在类似于setitimer
的函数/系统调用,允许用户设置警报但使用自定义信号?
答案 0 :(得分:1)
是。您想查看timer_create / timer_settime等系列电话。
timer_create
的第二个参数是struct sigevent
。其中的字段sigev_signo
可以设置为在计时器到期时发送特定的信号编号。