正在加载
请稍等

菜单

红楼飞雪 梦

15526773247

文章

信号种类

android 嵌入式开发, linux开发学习 by

每一种信号都给予一个符号名,对 32 位的 i386 平台而言,一个字为 32 位,因此信号有 32 种,而对 64 位的 Alpha AXP 平台而言,每个字为 64 位,因此信号最多可有 64 种。Linux定义了i386的32个信号,在include/asm/signal.h中定义。表中给出常用的符号名、描述和它们的信号值。

每种信号类型都有对应的信号处理程序(也叫信号的操作),就好像每个中断都有一个中断服务例程一样。大多数信号的默认操作是结束接收信号的进程;然而,一个进程通常可以请求系统采取某些代替的操作,各种代替操作是:

  • 忽略信号。随着这一选项的设置,进程将忽略信号的出现。有两个信号 不可以被忽略:SIGKILL,它将结束进程;SIGSTOP,它是作业控制机制的一部分,将挂起作业的执行。
  • 恢复信号的默认操作。
  • 执行一个预先安排的信号处理函数。进程可以登记特殊的信号处理函数。当进程收到信号时,信号处理函数将像中断服务例程一样被调用,当从该信号处理函数返回时,控制被返回给主程序,并且继续正常执行。

但是,信号和中断有所不同。中断的响应和处理都发生在内核空间,而信号的响应发生在内核空间,信号处理程序的执行却发生在用户空间。

那么,什么时候检测和响应信号呢?通常发生在两种情况下:

  • 当前进程由于系统调用、中断或异常而进入内核空间以后,从内核空间返回到用户空间前夕;
  • 当前进程在内核中进入睡眠以后刚被唤醒的时候,由于检测到信号的存在而提前返回到用户空间。

 

02 2015-11

 

我要 分享

 

 

本文 作者

 

相关 文章