0
我正在发送内核空间模块的信号给一个进程。这个过程有一个线程等待信号。如何在线程中等待信号?
我阅读信号手册,它说: 信号处置是一个per-process属性:在多线程应用程序中,包括处理信号对于所有线程都是相同的。
因此,并且根据手册pthread_sigmask: http://man7.org/linux/man-pages/man3/pthread_sigmask.3.html
我试图阻止在应用程序的主要功能的信号通过调用:
siginfo_t infoh1;
sigset_t waith1;
sigemptyset(&waith1);
sigaddset(&waith1, SIG_HILO1);
pthread_sigmask(SIG_BLOCK, &waith1, NULL);
注意,线程正在等待因为它的执行功能。
result = sigwaitinfo (&waith1, &infoh1);
信号被发送,但线程从未收到它(它挂起等待)。
我在做什么错?我用不同网站的不同代码进行了测试,结果没有成功
非常感谢你,我试着没有成功向一个线程发送一个信号,并且我编写了一个类似于你所描述的代码。从主进程(信号处理程序到达)开始,它将pthread_kill发送到线程以通知某个信号已到达。 – eduardosufan
非常好,做得很好。请将我的回答设置为社区的答案。谢谢。 – Oakdale