linux - 如何使用 SIGRTMAX 和 SIGRTMIN?

标签 linux process signals real-time

我确实知道信号是如何在 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 设置的处理程序

关于linux - 如何使用 SIGRTMAX 和 SIGRTMIN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31882797/

相关文章:

asp.net - 通过非个性化从 .NET Web 应用程序启动流程

c++ - 信号如何与序列点相互作用?

c - 没有子进程的痕迹

linux - 创建一个分离 screen ,向它发送命令

linux 发现无法从其他挂载点工作

Perl,等待非子进程退出

linux - 无法使用在本地机器上运行良好的程序在远程 Linux 机器上进入 Docker 容器?

c++ - 打开 FIFO(命名管道)卡住 - 忽略 SIGINT、SIGTERM

linux - sed:捕获组的输出值到文件中

sql-server - 索引超出范围 : JDBC SqlServer exception