如何使用SIGRTMAX和SIGRTMIN?

时间:2015-08-07 16:43:29

标签: linux process signals real-time

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

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

1 个答案:

答案 0 :(得分:4)

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

如果有人在将来遇到这个 -

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

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

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

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

这是通过 create_timer()获取计时器处理程序来实现的,这会将sigevent与处理程序相关联。

然后使用 struct itimerspec 设置到期时间间隔,然后使用 timer_settime()将到期时间与处理程序相关联。

所以现在到期与处理程序相关联,时间处理程序与sigevent和sigevent重定向相关联,这些重定向通过sigaction信号发送给处理程序