在多进程的编程中,信号是一种非常重要的多进程通讯手段。而进程间的信号很大情况是和操作系统是相关的,或者说很多信号是从操作系统中过来的。
我们这一篇就来说一下操作系统的信号。
操作系统中的信号其实在操作系统中可以称作是中断,可以理解为一个循环执行的程序中突然收到一个通知,或者信号,操作系统分配一个中断处理程序来处理这个中断信号。基本上所有的操作系统都是基于这个逻辑。
而中断又可以简单的分成两个大类,硬件中断和软中断。硬件中断可以理解为在电路上就会有一个电信号来给操作系统一个中断,软中断就可以理解为一个逻辑上的通知。
一般来说,硬件中断的优先级要比软中断的优先级要高,关于中断的内容可以讲好多,具体可以参考操作系统原理,有机会再说这一块,后续看看是不是可以整理操作系统级的C++编程再说。今天先简单说一下软中断的处理。
std库的信号处理
上面提到了,信号实际上是和操作系统强绑定的,可以说是操作系统级别的内容了。而C++的std标准库在操作系统之上定义了一层,讲操作系统相关的内容封装了起来,统一对外提供了一个接口,将操作系统的一些标准信号给出了统一的定义。
这个定义在<singal.h>头文件中。
总共定义了32个软中断。
#define SIGHUP 1 /* hangup */
#d