操作系统中的信号与异常:sigsetjmp和siglongjmp
Posted 白马负金羁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统中的信号与异常:sigsetjmp和siglongjmp相关的知识,希望对你有一定的参考价值。
此前的两篇文章【1】和【2】对于理解本文是必须的。
一、背景
信号因某些事件而产生后(例如发生了被除数为0的事件),会于稍后被传递给某一进程,进程也会采取某些措施来响应信号。在产生和到达期间,信号处于等待状态(pending)。
信号到达后,进程视具体信号执行如下默认操作之一。
- 屏蔽(或忽略)信号:内核将信号丢弃,信号对进程没有任何影响(进程永远不知道曾经出现过该信号);
- 终止(杀死)进程:这有时是指进程异常终止,而不是进程因调用exit()而发生的正常终止;
- 产生核心转储文件,同时进程终止:核心转储文件包含对进程虚拟内存的镜像,可将其加载到调试器中以检查进程终止时的状态;
- 暂停(不是终止)进程:使进程暂停执行;
- 执行之前被暂停的进程。
除了根据特定信号而采取默认行为之外,程序也能改变信号到达时的响应行为。也将此称为对信号的处置(disposition)设置。程序可以将对信号的处置设置为如下之一:
- 屏蔽(或忽略)信号;
- 采取默认行为;
- 执行信号处理器程序。
当系统捕捉到一个信号时,进入信号处理函数,此时当前信号被自动地加到进程的信号屏蔽字中。这阻止了后来产生的此种信号中断该信号处理程序。(仅当从信号捕捉函数返回时再将进程的信号屏蔽字复位为原先值:在信号处理程序被调用时,操作系统建立的新信号屏蔽字包括正被递送的信号。<
以上是关于操作系统中的信号与异常:sigsetjmp和siglongjmp的主要内容,如果未能解决你的问题,请参考以下文章
操作系统中的信号与异常:sigsetjmp和siglongjmp
操作系统中的信号与异常:sigsetjmp和siglongjmp
操作系统中的信号与异常:sigsetjmp和siglongjmp
操作系统中的信号与异常:sigsetjmp和siglongjmp