来源(博客园)

From: http://www.cnblogs.com/liujiangyi/archive/2012/08/01/2619096.html

信号产生的条件

1.用户按下某些终端键时,产生信号。在终端上按DELETE键通常产生中断信号(SIGINT),这是停止一个已失去控制程序的方法;

2.硬件异常产生信号:除数为0,无效的储存访问等等。这些条件通常由硬件检测到,并将其通知内核。然后内核为该条件发生时正在运行的进程产生适当的信号。例如: 对执行一个无效储存访问的进程产生一个SIGSEGV;

3.用户可用kill(1)命令将信号发送给其他进程。常用此命令终止一个失控的后台进程;

4.进程用kill(2)函数可将信号发送给另外一个进程或进程组。自然,有些限制:接收信号进程和发送信号进程的所有者必须相同,或发送信号进程的所有者必须是超级用户;

5.当检测到某种软件条件已经发生,并将其通知有关进程时也产生信号。例如SIGURG(在网络连接上传来非规定波特率的数据),SIGPIPE(在管道的读进程已经终止后一个进程写此管道),SIGALRM(进程所设置的闹钟已经超时)。

分类: 读书笔记

Link: http://www.asm32.net/article_details.aspx?id=7085