我正在从内核空间中的模块向进程发送信号。这个进程有一个线程等待信号。
我阅读了信号手册,它说:信号处置是每个进程的属性:在多线程应用程序中,包括信号的处置对于所有线程都是相同的。
因此,根据手册 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);
信号已发送,但线程从未收到它(它挂起等待)。
我究竟做错了什么?我用来自不同网站的不同代码进行了测试,但没有成功。