预习进程间通信方式1

来源:互联网 发布:爱奇艺网络电影排行榜 编辑:程序博客网 时间:2024/05/19 10:09

一.什么是信号

信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求是一样的。


二.信号的来源

信号的来源分为硬件来源与软件来源。其中硬件来源包括按下键盘或者其他的硬件故障等。软件的来源主要由发送信号的系统函数比如: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。