0
我有以下情况: 线程1: 把一个孩子和孩子叉起来,再说一遍A又执行一个过程。乙在多线程linux程序中忽略/阻塞SIGPIPE信号
线程2: 侦听通过Unix域套接字的命令,并杀死的过程中,已经分叉的孩子B,A在线程1 回应来电者,它已经杀死了孩子
我想忽略线程2的SIGPIPE,因为我不希望程序在客户端关闭套接字时崩溃。所以我试图用
sigset_t set;
sigemptyset(&set);
sigaddset(&set, SIGPIPE);
pthread_sigmask(SIG_BLOCK, &set, NULL);
这样做有助于阻止SIGPIPE但它也阻止该线程1的能力发送SIGKILL给孩子这样做。
我也使用下面的主函数试图创建线程
signal(SIG_IGN, SIGPIPE);
和 之前MSG_NOSIGNAL标志插座发送。
这也没有帮助我与SIGKILL的情况。任何想法如何在多线程条件下如何使用fork和execs以及SIGKILLs来安全地忽略SIGPIPE?