信号:信号是unix中最古老的进程通信的一种方式,他是软件层次上对中断机制的模拟,是一种异步通信方式,信号可以实现用户空间进程和内核空间进程的交互,内核进程可以利用他通知用户进程发生了哪些系统事件,我们可以任何时候给进程发送信号而无需知道进程的状态,如果进程当前并未处于执行态,则信号则会由内核保存起来,如果进程是阻塞状态,那么信号传递会被延迟,直到阻塞结束时才会传递给进程。
可靠信号和不可靠信号的区别:
不可靠信号如果发现信号以及在进程中注册,就会忽略该信号,因此若前一个信号还没注销又产生了新的信号就会导致信号丢失。
可靠信号发送给一个进程时,不管该信号是否已经在进程中注册,都会被再注册一次,因此信号不会丢失,所有可靠信号都支持排队,所有不可靠信号都不支持排队。
ps:这里信号的产生,注册,注销等是指信号的内部实现机制,而不是调用信号的函数实现,所以信号的注册与否,与本节后面讲到的发送信号函数(kill等)以及信号安装函数(signal()等)无关只与信号值有关。