C++ boost::mpi阻止IO未被linux信号中断

C++ boost::mpi阻止IO未被linux信号中断,c++,linux,boost,openmpi,boost-mpi,C++,Linux,Boost,Openmpi,Boost Mpi,我使用boost::mpi、OpenMPI。boost::mpi::communicator::recv(阻塞版本)不会被Linux信号中断。如何使用SIGTERM信号以正确的方式终止我的程序?问题已得到解决: 1.除主节点外的所有节点忽略信号。 2.主节点忽略除一个线程以外的信号(该线程调用POSIX pause函数)。暂停中断时,mpi“停止”消息将发送到所有节点。 因此,所有节点都停止工作。AFAIK,OpenMPI设置自己的SIGTERM处理程序。它可能接收到信号,但在信号处理程序中等待

我使用boost::mpi、OpenMPI。boost::mpi::communicator::recv(阻塞版本)不会被Linux信号中断。如何使用SIGTERM信号以正确的方式终止我的程序?

问题已得到解决: 1.除主节点外的所有节点忽略信号。 2.主节点忽略除一个线程以外的信号(该线程调用POSIX pause函数)。暂停中断时,mpi“停止”消息将发送到所有节点。
因此,所有节点都停止工作。

AFAIK,OpenMPI设置自己的
SIGTERM
处理程序。它可能接收到信号,但在信号处理程序中等待某些内容。Quick seacrh给出了这样一个结论:无论如何,您应该能够使用
SIGKILL
终止任何进程。