创建新信号或复用 SIGALRM?

标签 c linux linux-kernel signals

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

在主动方法中,我使用 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/

相关文章:

linux - 无法在 Windows 上使用 X2GO 客户端执行 startkde

linux - 如何使 "man"或 "nano"在 Windows 上的 Git Bash 上可用?

更改计算器//与 C 和函数作斗争

c - 从调用自身的 ptrace 分离

c - 套接字死锁

Linux调度器历史

c++ - 我如何在我的进程空间内 "mount"而不是 root?

c - C 中的指针和有序列表问题

node.js - nginx:无效选项: "off"和 entrypoint.sh::权限被拒绝

linux-kernel - 如何从 Kbuild Kconfig 文件中的另一个选项中选择字符串选项的值?