现在的位置: 首页 > 综合 > 正文

LINUX进程间通信_学习笔记4

2014年04月05日 ⁄ 综合 ⁄ 共 655字 ⁄ 字号 评论关闭

       上篇学习笔记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;

}





抱歉!评论已关闭.