设为首页 加入收藏

TOP

一步一步学Linux C:sigprocmask 阻塞进程
2014-11-24 13:31:46 来源: 作者: 【 】 浏览:1
Tags:步一步 Linux sigprocmask 阻塞 进程

1、有时候不希望在接到信号时就立即停止当前执行,去处理信号,同时也不希望忽略该信号,而是延时一段时间去调用信号处理函数。这种情况是通过阻塞信号实现的。


2、信号阻塞和忽略信号的区别。


阻塞的概念和忽略信号是不同的。操作系统在信号被进程解除阻塞之前不会讲信号传递出去,被阻塞的信号也不会影响进程的行为,信号只是暂时被阻止传递。当进程忽略一个信号时,信号会被传递出去但进程会将信号丢弃。


3、信号阻塞系统调用,它们的都起到阻塞的作用,它们不是协作使用的。


sigprocmask设定对信号屏蔽集内的信号的处理方式(阻塞或不阻塞)。


参数:


how:用于指定信号修改的方式,可能选择有三种


SIG_BLOCK//将set所指向的信号集中包含的信号加到当前的信号掩码中。即信号掩码和set信号集进行或操作。


SIG_UNBLOCK//将set所指向的信号集中包含的信号从当前的信号掩码中删除。即信号掩码和set进行与操作。


SIG_SETMASK //将set的值设定为新的进程信号掩码。即set对信号掩码进行了赋值操作。


set:为指向信号集的指针,在此专指新设的信号集,如果仅想读取现在的屏蔽值,可将其置为NULL。


oldset:也是指向信号集的指针,在此存放原来的信号集。可用来检测信号掩码中存在什么信号。


返回说明:


成功执行时,返回0。失败返回-1,errno被设为EINVAL。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇一步一步学Linux C:信号具体含义.. 下一篇一步一步学Linux C:sigsuspend ..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: