linux 信号【3】信号集和信号集函数

信号集

数据类型s i g s e t _ t ,一个信号集,表示多个信号的集合

#include <signal.h>

信号集初始化

int sigemptyset(sigset_t * s e t) ;
初始化由s e t指向的信号集,使排除其中所有信号

int sigfillset(sigset_t * s e t) ;
函数 s i g f i l l s e t初始化由s e t指向的信号集,使其包括所有信号

所有应用程序在使用信号集前,要对该信号集调用
s i g e m p t y s e t或s i g f i l l s e t一次。这是因为C编译程序将不赋初值的外部和静态度量都初始化为 0

信号集的变更

int sigaddset(sigset_t * s e t, int s i g n o) ;
int sigdelset(sigset_t * s e t, int s i g n o) ;所有应用程序在使用信号集前,要对该信号集调用
s i g e m p t y s e t或s i g f i l l s e t一次。这是因为C编译程序将不赋初值的外部和静态度量都初始化为 0

以上 四个函数返回:若成功则为0,若出错则为- 1

信号集测试

int sigismember(const sigset_t * s e t, int s i g n o)
s i g i s m e m b e r测试一指定位。因
为没有信号编号值为0

返回:若真则为1,若假则为0

sigprocmask函数

一个进程的信号屏蔽字规定了当前阻塞而不能递送给该进程的信号集.
函数s i g p r o c m a s k可以检测或更改(或两者)进程的信号屏蔽字
int sigprocmask(int h o w, const sigset_t * s e t, sigset_t * o s e t) ;
返回:若成功则为0,若出错则为- 1
o s e t是非空指针,进程的当前信号屏蔽字通过 o s e t返回。
其次,若s e t是一个非空指针,则参数h o w指示如何修改当前信号屏蔽字。
如果s e t是个空指针,则不改变该进程的信号屏蔽字,h o w的值也无意义。
如果在调用s i g p r o c m a s k后有任何未决的、不再阻塞的信号,则在 s i g p r o c m a s k返回前,至
少将其中之一递送给该进程
下表说明了h o w可选用的值。S I G _ B L O C K是或操
作,而S I G _ S E T M A S K则是赋值操作。

how说明
S I G _ B L O C K该进程新的信号屏蔽字是其当前信号屏蔽字和 s e t指向信号集的并集。s e t包含了我们希望阻塞的附加信号
S I G _ U N B L O C K该进程新的信号屏蔽字是其当前信号屏蔽字和 s e t所指向信号集的交集。 s e t包含了我们希望解除阻塞的信号
S I G _ S E T M A S K该进程新的信号屏蔽是s e t指向的值

sigpending函数

s i g p e n d i n g返回对于调用进程被阻塞不能递送和当前未决的信号集。该信号集通过 s e t参数
返回。
#include <signal.h>
int sigpending(sigset_t * s e t) ;
返回:若成功则为0,若出错则为- 1

sigsuspend函数

在一个原子操作中实现恢复信号屏蔽字,然后使进程睡眠.
进程的信号屏蔽字设置为由 s i g m a s k指向的值。在捕捉到一个信号或发生了一个会终止该进程
的信号之前,该进程也被挂起。如果捕捉到一个信号而且从该信号处理程序返回,则
s i g s u s p e n d返回,并且该进程的信号屏蔽字设置为调用s i g s u s p e n d之前的值。
注意,此函数没有成功返回值。如果它返回到调用者,则总是返回- 1,并且e r r n o设置为
E I N T R (表示一个被中断的系统调用)。

int sigsuspend(const sigset_t * s i g m a s k) ;
返回:- 1, errno设置为E I NT R

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值