0
我正试图让一个线程运行,它将负责检测来自同一进程内的任何其他线程的信号。信号线程问题
sigset_t sigset;
sigfillset(&sigset);
pthread_sigmask(SIG_BLOCK, &sigset, &old);
一旦我做到了这一点,我则进程的常驻:
m_child = fork();
if (m_child == 0)
{
// Start the thread responsible for detecting a signal
}
这就是所谓的“SignalHandler”其他类,其中开球此主题如下完成内完成:
m_pThread = new boost::thread(boost::bind(&SignalHandler::operator(), this));
和算符在紧凑循环中的操作如下:
while (1)
{
if (sigtimedwait(&sigset, &info, &ts) == -1)
{
if (errno == EAGAIN || errno == EINTR)
{
std::cout << "Time-out waiting for signal" << std::endl;
}
throw SystemError("sigtimedwait error");
}
else
{
std::cout << "Detected a signal [" << info.si_signo << "]" << std::endl;
}
}
当我执行“kill -9 myProcess”时有效,但是当我实际执行一些非法指针操作(在任何其他线程中)时,进程核心转储。
为什么子线程产生的信号没有捕获到我的升压信号捕获线程?