一步一步学Linux C:信号集及操作


在实际的应用中一个应用程序需要对多个信号进行处理,为了方便,linux系统引进了信号集的概念。信号集用多个信号组成的数据类型sigset_t.可用以下的系统调用设置信号集中所包含的数据。

1、常见信号及定义如图:

2、sigset_t在linux2.6.39/include/asm-generic/signal.h中定义

  1. typedef struct {  
  2.   
  3.      unsignedlong sig[_NSIG_WORDS];  
  4.   
  5. } sigset_t;  

3、相应的系统调用函数:

  1. #include<signal.h>   
  2.   
  3. int sigemptyset(sigset_t *set);  
  4.   
  5. int sigfillset(sigset_t *set);  
  6.   
  7. int sigadd(sigset_t *set,int setnumber);  
  8.   
  9. int sigdelset(sigset_t *set,int setnumber);  

set表示信号集指针,setnumber表示信号。

sigemptyset用于将set指向的信号集设为空,即不包含任何信号。

sigfillset用于将set指向的信号集设为满,即包含所有的信号。

sigaddset用于向信号集中添加信号。

sigdelset用于向信号集中删除信号。

以上函数成功返回0,失败返回-1 

4、另外,intsigsimember(const sigset_t set,int signumber),用于检测signumber是否在set中,若属于返回1,不是返回0.

相关内容