如何使用 SIGRTMAX 和 SIGRTMIN?

How to use SIGRTMAX and SIGRTMIN?

我知道信号是如何在 POSIX 中定义的实时信号。但是我很想知道如何使用这些信号或者这些信号是如何产生的?就像在无效内存引用上生成 SIGSEGV 一样,在键盘中断(如 ctrl+c)上生成 SIGINT。

SIGRTMAX 和 SIGRTMIN 等信号是如何生成和使用的?

实际上我确实弄清楚了如何为 SIGRTMAX 和 SIGRTMIN 生成信号。

如果以后有人遇到这个,那么-

首先你使用 struct sigaction ,根据你的要求设置成员。将 sa_handler 设置为您想要处理信号生成的函数。

要将此付诸实践,您可以使用函数 sigaction() 传递 linux 手册中指定的参数。

所以现在您使用 struct sigevent 设置其中的成员以指定要处理的信号编号以及如何发送通知。

这样你就完成了设置,现在你需要创建一个现象或事件来产生信号,比如时间到期。

这可以通过 timer_create() 获取计时器处理程序来完成,这会将您的 sigevent 与处理程序相关联。

然后使用 struct itimerspec 设置过期间隔,然后使用 timer_settime() 将过期与处理程序。

所以现在过期与处理程序关联,时间处理程序与 sigevent 关联,sigevent 将该信号重定向到由 sigaction

设置的处理程序