10.15 信号_sigsetjmp和siglongjmp函数
来源:互联网 发布:ios js rsa 编辑:程序博客网 时间:2024/06/05 06:22
在信号处理程序中经常调用longjmp函数以返回到程序的主循环中,而不是从该处理程序返回。但是,调用longjmp有一个问题。当捕捉到一个信号时,进入信号捕捉函数,此时当前信号被自动地加到进程的信号屏蔽字中。这阻止了后来产生的这种信号中断该信号处理程序。
POSIX.1并没有说明setjmp和longjmp对信号屏蔽字的作用,而是定义了两个新函数sigsetjmp和siglongjmp。在信号处理程序中进行非局部转移时应当使用这两个函数。
- #include <setjmp.h>
- int sigsetjmp(sigjmp_buf env, int savemask);
返回值:直接调用返回0,从siglongjmp调用返回则返回非0值
- int siglongjmp(sigjmp_buf env, int val);
这两个函数与setjmp和longjmp之间的唯一区别是sigsetjmp增加了一个参数。如果savemask非0,则sigsetjmp在env中保存进程的当前信号屏蔽字。调用siglongjmp时,如果带非0 savemask的sigsetjmp调用已经保存了env,则siglongjmp从其中恢复保存的信号屏蔽字。
- 10.15 信号_sigsetjmp和siglongjmp函数
- 信号处理函数的返回sigsetjmp/siglongjmp
- 《unix环境高级编程》信号——sigsetjmp 函数和 siglongjmp 函数
- 《unix环境高级编程》信号——sigsetjmp 函数和 siglongjmp 函数
- 函数setjmp,longjmp和sigsetjmp,siglongjmp
- 在Linux信号处理中longjmp和siglongjmp
- 用sigsetjmp和siglongjmp 解决从信号处理程序返回后信号仍被屏蔽问题
- 《UNIX环境高级编程》笔记--sigsetjmp和siglongjmp函数
- sigsetjmp, siglongjmp函数说明
- siglongjmp 和 sigsetjmp 用法
- 关于sigsetjmp和siglongjmp
- sigsetjmp和siglongjmp详解
- Sigsetjmp 和 Siglongjmp
- APUE学习笔记——10.15 sigsetjmp和siglongjmp
- 信号和槽函数
- Linux Signal (8): sigsetjmp和siglongjmp
- Linux Signal (8): sigsetjmp和siglongjmp
- Linux Signal (8): sigsetjmp和siglongjmp
- Hello, world!
- QTP-数据的加密和解密
- 做好一个team leader的几点看法
- oracle_V$session
- Java实现单链表
- 10.15 信号_sigsetjmp和siglongjmp函数
- msp430键盘程序
- dos命令大全
- SVG文件与DOM
- 读写excel, EXCEL的数据转存到ACCESS[代码]
- Hibernate3.5却报异常 java.lang.IncompatibleClassChangeError: class org.hibernate.cfg.ExtendedMappings has interface
- UDP和TCP协议包大小的计算
- VC++6.0中用ODBC连接mysql数据库
- java.lang.NoSuchMethodError: javax.persistence.UniqueConstraint.name()Ljava/lang/String