首页 理论教育 Linux系统编程:信号的使用

Linux系统编程:信号的使用

时间:2023-11-16 理论教育 版权反馈
【摘要】:例9.1列出系统所支持的所有信号列表。② SIGRTMIN信号是从UNIX系统中继承下来的称为不可靠信号。SIGRTMIN信号特点:不支持排队;发送用户进程判断后注册;发现相同信号已经在进程中注册,就不再注册,忽略该信号。前面显示的31种“SIG”开头的信号,也属于非实时信号。定义信号处理函数,当信号发生时,执行相应的处理函数。图9.1信号生命周期表9.1常见信号的含义及其默认操作

Linux系统编程:信号的使用

信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式。信号可以实现用户空间进程和内核进程之间的直接交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件。

信号事件的发生有两个来源:

(1)硬件来源:如按下了键盘【Delete】键或者鼠标单击,通常产生中断信号(SIGINT)或者其他硬件故障。

(2)软件来源:如使用系统调用或者是命令发出信号。最常用发送信号的系统函数是kill、raise、alarm、setitimer、sigation和sigqueue函数,软件来源还包括一些非法运算等操作。

例9.1 列出系统所支持的所有信号列表。

(1)使用系统命令:#kill -l

(2)分析。

① SIG信号。

在Linux下,每个信号的名字都以字符SIG开头,每个信号和一个数字编码相对应,在头文件signum.h中,这些信号都被定义为正整数。

② SIGRTMIN信号是从UNIX系统中继承下来的称为不可靠信号(也称为非实时信号)。

SIGRTMIN信号特点:不支持排队;发送用户进程判断后注册;发现相同信号已经在进程中注册,就不再注册,忽略该信号。前面显示的31种“SIG”开头的信号,也属于非实时信号。

③ SIGRTMAX是为了解决前面“不可靠信号”问题而进行更改和扩充的信号,称为可靠信号(也称为实时信号)。(www.xing528.com)

SIGRTMAX信号特点:支持排队;发送用户进程一次就注册一次;发现相同信号已经在进程中注册,也要再注册。

一旦有信号产生,信号生命周期如图9.1所示。用户进程对信号的响应有3种方式:

(1)执行默认操作。Linux对每种信号都规定了默认操作。

(2)捕捉信号。定义信号处理函数,当信号发生时,执行相应的处理函数。

(3)忽略信号。不希望接收到的信号对进程的执行产生影响,而让进程继续进行时,可以忽略该信号,即不对信号进程任何处理。

常见信号的含义及其默认操作如表9.1所示。

图9.1 信号生命周期

表9.1 常见信号的含义及其默认操作

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈