1、(1)信号是怎么产生的?
- 从键盘中产生(ctrl -c 、 ctrl -z 、 ctrl \)
- 软硬件异常结合
- 通过命令kill产生
- 通过系统函数产生
- 有软件产生
(2)信号的处理:
- 忽略
- 默认动作
- 自定义捕捉
2、阻塞信号之信号屏蔽pending
上面我们知道了信号产生的各种原因,接下来这个内容是我要重点讲的。实际执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态称为信号未决(Pending)。 进程可以选择阻塞(Block)某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。注意:阻塞和忽略是不同的,只要信号被阻塞将不能进行递达,除非解除阻塞。阻塞是在递达之前,忽略是在递达之后可选的一种处理动作。
(1)信号在内核中的示意图