在运行时期间意外接收SIGQUIT

时间:2013-11-28 06:27:41

标签: c++ multithreading pthreads signals

我有一个多线程程序,它使用父进程的信号与子线程进行通信。

我设置了一个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编程。

0 个答案:

没有答案