一、信号集(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返回当前被阻塞而挂起的信号。