信号(signal)
信号在软件层次上对中断机制 的一种模拟,是一种异步通信方式。信号可以直接进行用户空间进程和内核进程之间的交互, 内核进程也可以利用它来通知用户空间进程发生了哪些系统事件。它可以在任何时候发给某 一进程,而无需知道该进程的状态。如果该进程当前并未处于执行态,则该信号就由内核保 存起来,直到该进程恢复执行再传递给它为止;如果一个信号被进程设置为阻塞,则该信号 的传递被延迟,直到其阻塞被取消时才被传递给进程。
一个完整的信号生命周期可以分为 3 个重要阶段,这 3 个阶段由 4 个重要事件来刻 画的:
信号产生
信号在进程中注册
信号在进程中注销
执行信号处理函数
如下图:
用户进程对信号的响应可以有 3 种方式: ·
忽略信号:即对信号不做任何处理,但是有两个信号不能忽略,即 SIGKILL 及 SIGSTOP。 ·
捕捉信号:定义信号处理函数,当信号发生时,执行相应的处理函数。 ·
执行缺省操作:Linux 对每种信号都规定了默认操作。
常见信号的含义及其默认操作: