一、信号集(sigset_t)
信号集表示一个信号集合,可以将其传递给sigprocmask函数,指定阻塞哪些信号。下面是操作信号集的函数:
#include <signal.h> int (sigset_t *);//清空信号集 int (sigset_t *);//填充信号集 int (sigset_t *, int );//向信号集中加入指定信号signo int (sigset_t *, int );//从信号集中移除指定信号signo |
All four return: 0 if OK, 1 on error |
int (const sigset_t *, int signo);//测试signo是否在信号集中 |
Returns: 1 if true, 0 if false, 1 on error |
二、sigprocmask函数
sigprocmask函数可以用来设置进程的信号掩码,即指定哪些信号需要被阻塞;它也可以用来获取当前进程的信号掩码。
int sigprocmask ( int how, const struct * set, struct * oset );
how指定sigprocmask的操作类型:
SIG_BLOCK 指定将set中的信号加入当前的信号掩码中,即添加需要阻塞的信号;
SIG_UNBLOCK 指定将set中的信号从当前的信号掩码中移除,即解除阻塞信号;
SIG_SETMASK 设置当前的信号掩码为set;
如果oset不为null,当前进程的信号掩码通过oset返回。
如果set为null,则当前信号掩码通过oset返回,how将被忽略。
如果调用sigprocmask时,有当前被挂起的信号被解除阻塞,则在sigprocmask返回之前至少有一个信号被传递给进程。
sigprocmask是为单线程的进程而设计的。
三、sigpending函数
int sigpending ( sigset_t *set );
通过set返回当前被阻塞而挂起的信号。
转载于:https://blog.51cto.com/onesafe/895547