一.什么是信号
信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求是一样的。
二.信号的来源
信号的来源分为硬件来源与软件来源。其中硬件来源包括按下键盘或者其他的硬件故障等。软件的来源主要由发送信号的系统函数比如:kill,raise,alarm,setiting等;软件来源还包括一些非法运算操作。
三.信号的分类:
根据可靠性可以分为可靠信号与不可靠信号;根据时间分类可以分为实时信号与非实时信号。
四.信号处理方式:
a:忽略信号。就是对信号不做任何处理,但是也有两个忽略不掉的信号,分别是SIGKILL和SIGSTOP。
b:捕捉信号。就是定义好信号的处理函数,当信号发生的时候,执行相应的处理函数。
c:执行默认操作。Linux对每种信号都规定了默认操作,注意,进程对实时信号灯的默认反应是进程终止。
五.KILL函数
kill函数用于传送信号给指定的进程。
kill函数的表头文件为#include <sys/types.h>和#include <signal.h>
定义函数为:int kill(pid _t pid , int sig);
kill()可以用来送参数sig指定的信号给参数pid指定的进程,传送的方式与参数pid的值有关:
a:当pid>0时,信号传送给进程识别码是pid的进程;
b:当pid=0时,信号传送给当前进程同一个进程组的所有进程;
c:当pid=-1时,信号将传送给系统内的所有进程;
d:当pid<0时,将信号传送给进程组识别码为pid绝对值的所有进程。
kill函数的返回值:执行成功返回值为0,如果有错误则返回-1。
六.alarm函数
alarm函数用于设置信号传送闹钟。
alarm函数的表头文件为#include <unistd.h>;
定义函数:unsigned int alarm (unsigned int seconds);
函数说明:alarm()用来设置信号SIGALRM,在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds为0,则之前设置的闹钟会被取消,并将剩下的时间返回。
返回值:返回之前闹钟的剩余秒数,如果之前未设置闹钟则返回0。