引言
上一篇笔记主要是介绍了信号的核心API,但是信号还是存在一些特征:
- 比如说信号在响应信号的过程中,有另外一个信号过来会不会发生嵌套?
- 或者多个信号进行访问,进程应该是有序响应还是丢弃呢?
- 或者进程设置信号的阻塞掩码,子进程是否会继承呢?
- 或者挂起的信号是否也会继承给子进程?
那么这篇笔记主要是解答以上几个问题。
阻塞掩码是否会被子进程继承?
代码实现:
代码运行结果:
因此结论是:子进程会继承父进程的阻塞掩码
挂起信号是否会被子进程继承?
由上一个结论可以得知:子进程会继承父进程的阻塞,因此也可以借助上一个结论来证明挂起信号是否会被继承:
代码运行结果:
如上图:只有父进程能够成功打印SIGQUIT,证明子进程没有继承挂起的信号
结论:子进程不能继承父进程挂起的信号
信号是否会相互嵌套?
如图所示,信号可以嵌套
结论:信号是会相互嵌套的,但是相同信号不会嵌套
非实时信号只会响应一次,实时信号会全部响应
总结:
- 子进程会继承父进程的阻塞掩码
- 子进程不能继承父进程挂起的信号
- 信号是会相互嵌套的,但是相同信号不会嵌套
- 非实时信号只会响应一次,实时信号会全部响应