在實際的應用中一個應用程序需要對多個信號進行處理,為了方便,linux系統引進了信號集的概念。信號集用多個信號組成的數據類型sigset_t.可用以下的系統調用設置信號集中所包含的數據。
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.