我有一个多线程程序,它使用父进程的信号与子线程进行通信。
我设置了一个sigset_t来接收3个信号,SIGUSR1,SIGUSR2和SIGQUIT。我的每个线程调用相同的函数,它们位于一个无限循环中,该循环包含一个switch语句来处理sigwait调用的返回值。出于某种原因,我的线程在执行期间因为未知原因而被随机发送SIGQUIT信号,其中我没有从父线程或运行时向线程发送信号。我应该寻找什么来纠正这个不幸事件?
我的信号处理程序的结构如下:
for(;;){
if(sigwait(&signal_set,&return_val)) std::cout<<"\nsigwait error";
switch(return_val){
case: SIGUSR1
//do stuff
case: SIGUSR2
//do stuff
case: SIGQUIT
}
}
我在OSX上用Xcode编程。