本文简单介绍下Linux信号处理机制,为介绍二进制翻译下信号处理机制做一个铺垫。
首先,先说一下什么是信号。信号本质上是在软件层次上对中断机制的一种模拟,其主要有以下几种来源:
- 程序错误:除零,非法内存访问…
- 外部信号:终端Ctrl-C产生SGINT信号,定时器到期产生SIGALRM…
- 显式请求:kill函数允许进程发送任何信号给其他进程或进程组。
在Linux下,可以通过以下命令查看系统所有的信号:
kill -l |
可以通过类似下面的命令显式的给一个进程发送一个信号:
kill -2 pid |
上面的命令将2号信号发送给进程id为pid的进程。不存在编号为0的信号。
目前Linux支持64种信号。信号分为非实时信号(不可靠信号)和实时信号(可靠信号)两种类型,对应于 Linux 的信号值为 1-31 和 34-64。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。本文着重于Linux的信号处理机制,对信号更多的介绍可以参考这里。
最新回复评论