信号是在软件测上对中断机制的一种模拟是一种异步通信方式,信号可以直接进行用户空闲进程和内核进程之间的交互,内核进程也可以利用他来通知用户控件进程发生了哪些系统事件。如果该进程当前未处于执行态,则该信号由内核保存起来,直到该进程恢复执行再传递给它;如果一个信号被进程设置为阻塞,则该信号的传递被延时,直到其阻塞被取消时才被传递给进程
信号的生存周期:
由内核产生,将信号发送给用户进程,用户进程进行信号注册(signal将信号和执行方式关联起来)->信号处理->信号注销
信号的处理方式
忽略信号:对信号不做任何处理,但是有两个信号不能忽略:即SIGKILL和SIGSTOP
捕捉信号:定义信号处理函数,当信号发生时,执行相应的处理函数
执行缺省操作:linux对每种信号都规定了默认操作
信号处理流程
使用信号的场合
后台进程需要使用信号
两个进程之间没有亲缘关系,无法使用无名管道
如果两个通信进程之一只能使用标准输入和标准输出,则无法使用FIFO
信号的发送和捕捉
Kill():
函数原型:int kill(pid_t pid, int sig)
其中 pid=正数:要接受信号量的进程的进程号
Pid=0: 信号量被发送到所有和pid进程在同一进程组的进程
Pid=1: 信号发送给所有进程表中的进程(进程号最大的除外:1)
r