sigsuspend()函数作用详解
来源:互联网 发布:淘宝卖家去哪找淘客? 编辑:程序博客网 时间:2024/06/05 09:30
http://blog.sina.com.cn/s/blog_6af9566301013xp4.html
1)头文件:#include <signal.h>
2)一个保护临界区代码的错误实例:(sigprocmask()和pause()实现)
#include <unistd.h>
#include <signal.h>
#include <stdio.h>
void handler(int sig)
{
}
int main()
{
}
上面实例的问题是:本来期望pause()之后,来SIGINT信号,可以结束程序;可是,如果当“取消阻塞”和“pause”之间,正好来了SIGINT信号,结果程序因为pause的原因会一直挂起。。。
解决的方式,当然是sigsuspend()函数了。
3)使用sigsuspend()的程序
#include <unistd.h>
#include <signal.h>
#include <stdio.h>
void handler(int sig)
{
}
int main()
{
}
sigsuspend的原子操作是:
(1)设置新的mask阻塞当前进程(上面是用wait替换new,即阻塞SIGUSR1信号)
(2)收到SIGUSR1信号,阻塞,程序继续挂起;收到其他信号,恢复原先的mask(即包含SIGINT信号的)。
(3)调用该进程设置的信号处理函数(程序中如果先来SIGUSR1信号,然后过来SIGINT信号,则信号处理函数会调用两次,打印不同的内容。第一次打印SIGINT,第二次打印SIGUSR1,因为SIGUSR1是前面阻塞的)
(4)待信号处理函数返回,sigsuspend返回了。(sigsuspend将捕捉信号和信号处理函数集成到一起了)
- sigsuspend()函数作用详解
- sigsuspend()函数作用详解
- sigsuspend()函数作用详解
- sigsuspend()函数作用详解
- sigsuspend()函数作用详解
- sigsuspend()函数作用
- sigsuspend详解
- sigsuspend函数
- sigsuspend函数
- sigsuspend函数
- sigsuspend函数
- sigsuspend 函数 释疑
- 10.16 sigsuspend 函数
- sigsuspend()函数 解释
- mysleep与sigsuspend函数
- sigsuspend函数和sigwait函数
- sigprocmask , sigpending 和 sigsuspend函数
- sigsuspend sigprocmask函数的使用方法
- 手游营销的10个靠谱方向
- discuz论坛发起活动插件的数据调用以及数据保存数据表。
- Spring MVC之注解Annonatoin之@RequestParam @RequestBody @PathVariable 等
- 浅析C++中的this指针
- 【android】apk逆向
- sigsuspend()函数作用详解
- AOP面向切面编程
- linux下Eclipse+CDT开发环境配置与使用
- 工厂方法模式
- property和constructor-arg的使用
- 网页直接打开PDF或强制下载以及header和content-type参数详解
- c++构造函数详解
- JS代码的window.location属性详解
- [Android] View控件显示隐藏动画效果