当前位置:嗨网首页>书籍在线阅读

01-信号

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

第10章 信号

信号是一种软件中断,它提供了异步事件的处理机制。这些异步事件可以来自系统外部——比如用户按下Ctrl-C产生中断符——或者来自程序或内核内部的执行动作,例如进程执行的代码包含除以零的误操作。信号作为一种进程间通信(IPC)的基本形式,而一个进程可以给另一个进程发送信号。

间距的关键不仅在于事件的发生是异步的(例如用户可以在程序执行的任何时刻按下Ctrl-C),而且程序对信号的处理也是异步的。信号处理函数在内核注册,收到信号时,内核从程序的其他部分异步调用信号处理函数。

信号很早就已经是UNIX的一部分。随着时间推移,信号有了很大的改进,最显著的是在可靠性方面,之前会出现信号可能丢失的情况;而在功能方面,信号现在可以携带用户定义的附加信息。最初,不同的UNIX系统对信号做了一些不兼容的变化。幸运的是,有了POSIX标准,开始对信号处理进行标准化。Linux提供的正是POSIX定义的这个标准,并且也是我们这里将要讨论的。

在本章中,我们将从信号概述开始,并讨论其使用方式以及一些误用操作。然后,我们会讨论Linux管理和操作信号的各种接口。

大多数较大型的应用都和信号有关。即使应用程序在设计上故意不依赖信号来进行通信(这通常是一个好主意),但在某些特殊的情况下,仍然会被迫使用信号,比如处理程序终止。