通俗易懂说信号(5)sigprocmask


通俗易懂说信号(1)信号
https://blog.csdn.net/lqy971966/article/details/88938079
通俗易懂说信号(2)信号集及操作
https://blog.csdn.net/lqy971966/article/details/103176646
通俗易懂说信号(3)signalfd
https://blog.csdn.net/lqy971966/article/details/103531513
通俗易懂说信号(4)Linux信号列表及其详解
https://blog.csdn.net/lqy971966/article/details/106714752
通俗易懂说信号(5)sigprocmask
https://blog.csdn.net/lqy971966/article/details/117919696

1. sigprocmask 定义

用于改变进程的当前阻塞信号集。

可以根据参数how指定的方法修改进程的信号屏蔽字。

2. sigprocmask 参数说明

#include <signal.h>
int sigprocmask( int how, const sigset_t *restrict set, sigset_t *restrict oset );

how的取值:
	SIG_BLOCK 把参数set中的信号添加到信号屏蔽字中
	SIG_SETMASK 把信号屏蔽字设置为参数set中的信号
	SIG_UNBLOCK 从信号屏蔽字中删除参数set中的信号
	  	set包含了我们希望阻塞的附加信号,就是设置屏蔽信号。
	  			  
首先,若 oset 是非空指针,那么进程的当前信号屏蔽字通过oset返回。
其次,若 set 是一个非空指针,则参数how指示如何修改当前信号屏蔽字。

返回值:若成功则返回0,若出错则返回-1

3. 例子说明

3.1 例子1

sigset_t mask;
int cc;

sigemptyset(&mask);
sigaddset(&mask, SIGQUIT);
sigaddset(&mask, SIGUSR1);
cc = sigprocmask(SIG_BLOCK, &mask, NULL);
assert(cc == 0);

作用:在进程中屏蔽退出信号和用户1信号。

参考:
http://www.voidcn.com/article/p-noavawjn-tv.html

3.2 例子2

sigset_t stMask;

/* 主线程信号屏蔽,以防主线程无法收到teminal信号 */
(VOID)sigemptyset(&stMask);
(VOID)sigaddset(&stMask, SIGTERM);
(VOID)pthread_sigmask(SIG_BLOCK, &stMask, NULL);

作用:在进程中屏蔽 SIGTERM程序结束(terminate)信号。

参考:
https://www.cnblogs.com/nufangrensheng/p/3515257.html
http://blog.chinaunix.net/uid-24876683-id-1741933.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值