我需要在linux中的线程的信号队列中找到待处理信号的数量.是否有Linux提供的API?
除了我们查询的线程之外,需要从线程调用此API.
sigpending给出了调用线程的API.是否有任何API,它将线程ID作为arg,并提供有关队列中待处理信号的一些信息.
任何帮助表示赞赏.
sigpending()返回一个待处理的线程信号集.您可以迭代该sigset_t并使用sigismember()来测试成员资格.
传统上,UNIX不会排队多个信号实例(从这个意义上说,它们仍然是"不可靠的").有时您可以通过实时信号获得此效果.
在Linux上,从signalfd读取()将允许一次读取一个以上的信号实例,如果它们排队的话.
我不知道这样的 API,但这里有一个解决方法:编写一个包装信号代码的小库。当您发送信号时,增加原子计数器。当您处理信号时,再次递减计数器。然后,您可以使用这个原子计数器来满足您的好奇心。
[编辑] 如果这还不够,那么您就有了来源:只需检查所涉及的代码和数据结构,并使用您需要的内容来查看内核结构。但这可能涉及编写模块(因为进程无法读取内核的数据结构),而且您的代码将依赖于编译它的内核。所以我建议不要采用这种方法。
| 归档时间: |
|
| 查看次数: |
2186 次 |
| 最近记录: |