那年,一步一步学linux c ---信号集及操作


本系列文章由muge0913编写,转载请注明出处:http://blog.csdn.net/muge0913/article/details/7332372


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


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

那年,一步一步学linux c ---信号集及操作_第1张图片



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

typedef struct {

     unsignedlong sig[_NSIG_WORDS];

} sigset_t;



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


#include<signal.h>

int sigemptyset(sigset_t *set);

int sigfillset(sigset_t *set);

int sigadd(sigset_t *set,int setnumber);

int sigdelset(sigset_t *set,int setnumber);



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

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

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

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

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

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

 

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








你可能感兴趣的:(c,linux,struct)