资源描述
,*,单击此处编辑母版标题样式,实验四进程间通信(信号量机制实验),单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,实验五 进程间通信 (信号量机制实验),1、信号,信号机制是LINUX为进程中断处理而设置的。它只是一组预定义的值,因此不能用于信息交换,仅用于进程中断控制。,2、信号来源,硬件来源(比如按下键盘或硬件故障),软件来源(常用发送信号的系统函数 kill),实验四进程间通信(信号量机制实验),3、信号的发送,kill( ) - 传送信号给指定的进程,系统调用格式,int kill(pid,sig),参数定义,int pid,sig;,其中,pid是一个或一组进程的标识符,参数sig是要发送的软中断信号。,实验四进程间通信(信号量机制实验),4、进程对信号的响应,进程可以通过三种方式来响应一个信号:,忽略信号,对信号不做任何处理;,捕捉信号,定义信号处理函数,当信号发生时,执行相应的处理函数;,执行缺省操作,实验四进程间通信(信号量机制实验),5、信号的安装(设置信号关联动作),系统调用格式:,signal( sig , function ),参数定义:,int sig;,void (*function)( );,函数说明:当指定信号sig 到达时就会跳转到function指定的函数执行。如果参function不是函数指针,则必须是下列两个常数之一:,SIG_IGN 忽略参数sig指定的信号(SIG_INT=1),SIG_DFL 将参数sig 指定的信号重设为核心预设的信号处理方式。(SIG_DFL=0),实验四进程间通信(信号量机制实验),例如:signal( SIGINT, stop)中的SIGINT是来自键盘的中断信号,当键盘有中断信号产生时,进程就会转入stop( ) 做相应处理。,signal(10,stop)中的10是用户自定义的信号,由父进程发出。父进程用kill(p1,10 )函数发中断信号10给子进程p1,子进程p1在收到父进程发来的中断信号10时,就转入stop( )做相应处理。,实验四进程间通信(信号量机制实验),
展开阅读全文