上篇学习笔记3中处理函数signal(),只能处理单个信号。处理多个信号需要信号集函数组(signal set),将在sigprocmask()这样的函数中使用这种数据类型。信号集函数组包括:创建函数集、登记信号集、检测信号集。
1.函数执行过程
2.创建信号集
意义分别为:
<1>初始化信号集合为空
<2>初始化信号集合为所有信号的集合
<3>将指定信号添加到信号集中
<4>从信号集中删除该信号
<5>查询信号是否在信号集中
3.登记信号集
4.实例代码 sigaction.c
#include <stdio.h> 
#include <sys/types.h> 
#include <stdlib.h>
#include <signal.h>
void func(int sig) 
{ 
printf("I get a signal!\n");
}
int main()
{   char buffer[100];
    struct sigaction act;
    act.sa_handler=func;
    sigemptyset(&act.sa_mask);
    act.sa_flags = 0;
    if(sigaction(SIGINT,&act, NULL) == -1) 
    { 
    printf("sigaction error exit now\n");
    exit(0);
    }
    printf("pid:%ld\n",(long)getpid());
    for(;;)
    {
    fgets(buffer,sizeof(buffer),stdin); 
    printf("buffer is:%s\n",buffer); 
    }
    return 0;
}
原文:http://blog.csdn.net/ctxbloger/article/details/18971285