赞
踩
本文 是一篇学习文章,学习的《unix高级环境编程》
1、信号集,它的处理跟5个函数紧密相关。
信号集是一个能表示多个信号的数据类型,sigset_t set ;set即一个信号集。
既然是一个集合,就需要对集合进行添加/删除等操作。
int sigemptyset(sigset_t *set); 将set集合置空
int sigfillset(sigset_t *set); 将所有信号加入set集合
int sigaddset(sigset_t *set,int signo); 将signo信号加入到set集合
int sigdelset(sigset_t *set,int signo); 从set集合中移除signo信号
int sigismember(const sigset_t *set,int signo); signo判断信号是否存在于set集合中。
最简单的应用就是下面的一段代码:
#include <stdio.h>
#include <signal.h>
void main()
{
sigset_t set;
sigemptyset(&set);
sigaddset(&set,SIGINT);
if(sigismember(&set,SIGINT))
printf("yes\n");
if(sigismember(&set,SIGTSTP))
printf("yes too\n");
sigdelset(&set,SIGINT);
sigfillset(&set);
if(sigismember(&set,SIGINT))
printf("yes\n");
if(sigismember(&set,SIGTSTP))
printf("yes too\n");
sigemptyset(&set);
if(sigismember(&set,SIGINT))
printf("yes\n");
if(sigismember(&set,SIGTSTP))
printf("yes too\n");
}
SIG_BLOCK
|
该进程新的信号屏蔽字是其当前信号屏蔽字和set指向信号集的并集。set包含了我
们希望阻塞的附加信号。
|
SIG_UNBLOCK
|
该进程新的信号屏蔽字是其当前信号屏蔽字和set所指向信号集的补集的交集。set包含了
我们希望解除阻塞的信号.
|
SIG_SETMASK
|
该进程新的信号屏蔽是set指向的值
|
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。