信号:是UNIX进程间通信的一种标准方式,在最早期的UNIX系统中已经存在。信号的出现允许内核和其它进程通知进程特定事件的发生。现代UNIX中也存在其它的进程间通信方式,但由于信号相对简单和有效,它们仍然被广泛使用。
最简单的消息,当一个信号被发送时,它没有参数等附加信息,唯有一个整数来表示信号的值。信号的值在所有的UNIX系统中已经标准化了,每一个信 号都有一个名字,它以三个字母SIG开头,对应于特定的事件。例如:SIGKILL表示终止进程;SIGBUS代表硬件故障;SIGCHLD代表子进程状 态改变。
UNIX中常用的信号有31个,除了前面提到的三个信号外,还有如下信号是文章中用到的,其它的不再一一列出。
SIGSTOP 暂停程序执行
SIGCONT 恢复程序执行
进程对信号的处理
捕捉),或者对信号什么也不做,信号发生的时候执行系统默认动作。
递送(deliver)给进程,但只有进程解除对信号的阻塞时才会被处理。
信号未决(pending)。
SIGSTOP和SIGKILL是特殊的,他们既不能被捕捉,也不能被忽略,也不能被阻塞,这个特性保证了系统管理员在任何时候都可以用信号暂停和结束程序。
每个信号都有一个编号和一个宏定义名称,这些宏定义可以在signal.h中找到,例如其中有定义#define SIGINT 2。编号34以上的是实时信号,