首先,信号这个概念不好理解,因为它本身涉及到了“中断”这个概念。
“中断”概念的形象化描述(个人理解,可能会有偏差):CPU正在执行某个指令,突然,中断信号到达CPU指挥中心,CPU切换上下文,执行中断处理函数,中断处理函数执行完毕,CPU切换上下文,继续执行被中断的指令。
其中,中断处理函数就是信号处理函数,信号可以有进程产生,也可以由内核产生。信号的目的地可以是进程本身,也可以是其他进程。
信号的处理语义在C标准库中没有明确定义,这里的语义指的是:信号如何才能被阻塞,信号是否会排队等相关的概念。
《UNIX 网络编程》第3版5.9,5.10节有详细介绍。