我正在尝试编写一个基准测试来接收来自内核的信号,告诉它调整其参数。我正在尝试研究主动或被动方法是否最有效。
在主动方法中,我使用 setitimer
定期设置警报并强制基准测试查看其目前的性能并重新调整自身。
在响应式(Reactive)方法中,内核会定期监视进程并在其性能不佳时向其发出信号。
因为我一直在使用 setitimer
功能,并且因为 setitimer
导致 SIGALRM
,所以我要求内核抛出一个 SIGALRM
响应式(Reactive)方法。这一直很好用。但是,现在我需要使用 SIGALRM
在特定的时间段内运行基准测试。
有没有办法复用 SIGALRM
以达到两个目的 - 进行定时运行并终止 和 以重新调整。是否有类似于 setitimer
的函数/系统调用允许用户设置闹钟但带有自定义信号?
最佳答案
是的。你想看看 timer_create/timer_settime等等,电话的家庭。
timer_create
的第二个参数是一个struct sigevent
。其中的字段 sigev_signo
可以设置为在计时器到期时发送特定的信号编号。
关于创建新信号或复用 SIGALRM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24579360/