一本书讲透Java线程:原理与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2.1 信号

信号(Singal)是UNIX系统最先开始使用的进程间通信机制,因为Linux继承自UNIX,所以Linux也支持信号机制。通过向一个或多个进程发送异步事件信号来实现通信,例如在终端上可以通过shell将任务发送给子进程。在命令控制台上输入kill-l可以查看系统支持的信号,如图1-6所示。

图1-6 系统支持的信号

一个进程收到其他进程发来的信号后可以选择处理,也可以选择忽略,但是SIGSTOP和SIGKILL这两个信号是不允许忽略的。SIGSTOP信号会通知当前正在运行的进程执行关闭操作,SIGKILL信号会通知杀死当前进程。除此之外的其他信号,进程可以按照业务场景自主选择。如果选择交给内核进行处理,那么就执行默认处理。操作系统会中断目标程序的进程来向其发送信号。在任何非原子指令中,执行都可以中断,如果进程已经注册了信号处理程序,那么就执行对应的程序,如果没有注册,将采用系统默认的处理方式。常见信号如表1-4所示。

表1-4 常见信号列表