Linux中,main函数下面写的,有关几个信号处理函数?
sigset_t signal_mask;
sigemptyset (&signal_mask);
sigaddset (&signal_mask, SIGPIPE);
int rc = pthread_sigmask (SIG_BLOCK, &signal_mask, NULL);
这个函数和它们的参数都是什么意思啊? linux
[解决办法]
在多线程的程序里,希望只在主线程中处理信号,可以使用
函数:
int pthread_sigmask (int how,
const sigset_t *set,
sigset_t *oset)
用作在主调线程里控制信号掩码。
How:
SIG_BLOCK: 结果集是当前集合参数集的并集
SIG_UNBLOCK: 结果集是当前集合参数集的差集
SIG_SETMASK: 结果集是由参数集指向的集
sigset_t signal_mask;//定义一个信号集变量
sigemptyset (&signal_mask);//把变量清空为空的信号集
sigaddset (&signal_mask, SIGPIPE);//往信号集中加入信号SIGPIPE
int rc = pthread_sigmask (SIG_BLOCK, &signal_mask, NULL);//设置进程屏蔽字,新的线程会继承它的创建线程的信号屏蔽字