- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我确实知道信号是如何在 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/
我确实知道信号是如何在 POSIX 中定义的实时信号。但是我很想知道如何使用这些信号或者这些信号是如何产生的?就像在无效内存引用上生成 SIGSEGV 一样,在键盘中断(如 ctrl+c)上生成 SI
我调用 sigaction 为 SIGRTMAX 安装处理程序,这通常没问题。但是,如果我使用 valgrind 分析可执行文件,这将失败。为什么? 最佳答案 它失败是因为 valgrind 保留了一
我正在使用的代码有一个共享信号处理程序,它打开信号编号以适本地处理它。 我正在添加自定义信号。像这样 static void signal_handler (int s) { if ( s =
我是一名优秀的程序员,十分优秀!