Linux的信号处理机制
信号是Linux操作系统中进程间通讯的方式,是一种异步的通知机制。
信号的产生
1.硬件方式
- 用户输入:比如在终端上按下组合键ctrl+C,产生SIGINT信号;
- 硬件异常:CPU检测到内存非法访问等异常,通知内核生成相应信号,并发送给发生事件的进程;
2.软件方式
通过系统调用,发送signal信号:kill(),raise(),sigqueue(),alarm(),setitimer(),abort()
- kernel,使用 kill_proc_info()等
- native,使用 kill() 或者raise()等
- java,使用 Procees.sendSignal()等
信号的处理
- 默认 接收到信号后按默认的行为处理该信号。 这是多数应用采取的处理方式。
- 自定义 用自定义的信号处理函数来执行特定的动作
- 忽略 接收到信号后不做任何反应。