操作系统中的信号与异常:sigsetjmp和siglongjmp

Posted 白马负金羁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统中的信号与异常:sigsetjmp和siglongjmp相关的知识,希望对你有一定的参考价值。

此前的两篇文章【1】和【2】对于理解本文是必须的。

一、背景

信号因某些事件而产生后(例如发生了被除数为0的事件),会于稍后被传递给某一进程,进程也会采取某些措施来响应信号。在产生和到达期间,信号处于等待状态(pending)。

信号到达后,进程视具体信号执行如下默认操作之一。

  1. 屏蔽(或忽略)信号:内核将信号丢弃,信号对进程没有任何影响(进程永远不知道曾经出现过该信号);
  2. 终止(杀死)进程:这有时是指进程异常终止,而不是进程因调用exit()而发生的正常终止;
  3. 产生核心转储文件,同时进程终止:核心转储文件包含对进程虚拟内存的镜像,可将其加载到调试器中以检查进程终止时的状态;
  4. 暂停(不是终止)进程:使进程暂停执行;
  5. 执行之前被暂停的进程。

除了根据特定信号而采取默认行为之外,程序也能改变信号到达时的响应行为。也将此称为对信号的处置(disposition)设置。程序可以将对信号的处置设置为如下之一:

  1. 屏蔽(或忽略)信号;
  2. 采取默认行为;
  3. 执行信号处理器程序。

当系统捕捉到一个信号时,进入信号处理函数,此时当前信号被自动地加到进程的信号屏蔽字中。这阻止了后来产生的此种信号中断该信号处理程序。(仅当从信号捕捉函数返回时再将进程的信号屏蔽字复位为原先值:在信号处理程序被调用时,操作系统建立的新信号屏蔽字包括正被递送的信号。<

以上是关于操作系统中的信号与异常:sigsetjmp和siglongjmp的主要内容,如果未能解决你的问题,请参考以下文章

操作系统中的信号与异常:sigsetjmp和siglongjmp

操作系统中的信号与异常:sigsetjmp和siglongjmp

操作系统中的信号与异常:sigsetjmp和siglongjmp

操作系统中的信号与异常:sigsetjmp和siglongjmp

操作系统中的信号与异常:sigsetjmp和siglongjmp

信号之sigsetjmp和siglongjmp函数(转)