如何使用 SIGRTMAX 和 SIGRTMIN?

Anu*_*rag 4 linux signals real-time process

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

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

Anu*_*rag 8

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

如果将来有人遇到这种情况,那么-

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

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

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

至此,您已完成设置,现在您需要创建一个现象或事件,以生成可能像时间到期这样的信号。

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

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

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