管道通信父进程使用系统调用pipe.ppt
上传人:天马****23 上传时间:2024-09-10 格式:PPT 页数:20 大小:1.1MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

管道通信父进程使用系统调用pipe.ppt

管道通信父进程使用系统调用pipe.ppt

预览

免费试读已结束,剩余 10 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验一、进程控制编写程序,演示多进程并发执行和进程软中断、管道通信。父进程使用系统调用pipe()建立一个管道,然后使用系统调用fork()创建两个子进程,子进程1和子进程2;子进程1每隔1秒通过管道向子进程2发送数据:Isendyouxtimes.(x初值为1,每次发送后做加一操作)子进程2从管道读出信息,并显示在屏幕上。父进程用系统调用signal()捕捉来自键盘的中断信号(即按Ctrl+C键);当捕捉到中断信号后,父进程用系统调用Kill()向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:ChildProcesslisKilledbyParent!ChildProcess2isKilledbyParent!父进程等待两个子进程终止后,释放管道并输出如下的信息后终止ParentProcessisKilled!三、预备知识2、编辑、编译、执行/调试3、Linux进程管理命令——进程查看3、Linux进程管理命令—进程终止4、Linux进程控制函数——进程创建4、Linux进程控制函数—修改进程4、Linux进程控制函数—进程属性操作4、Linux控制函数—进程退出4.Linux控制函数—等待进程终止5.进程的软中断通信当某个信号出现时,系统有三种处理方式:忽略信号:大多数信号使用,但SIGKIL和SIGSTOP不能被忽略捕捉信号:通知内核在某种信号发生时,调用一个用户函数执行系统默认动作:异常终止(abort)、退出(exit)、忽略(ignore)、停止(stop)或继续(continue)功能发送信号:发送进程把信号送到指定进程信号域的某一位上,如目标进程正在一个可被中断的优先级上睡眠,核心便将其唤醒预置对信号的处理方式:进程处于核心态时,即使受到软中断也不予理睬;只有当它返回到用户态后,才处理软中断信号收受信号的进程按事先规定完成对相应事件的处理5.进程的软中断通信——函数的使用include<stdio.h>#include<stdlib.h>#include<signal.h>voidmy_func(intsig_no){if(sig_no==SIGUSR1)printf("ReceiveSIGUSR1.\n");if(sig_no==SIGUSR2)printf("ReceiveSIGUSR2.\n");if(sig_no==SIGINT){printf("ReceiveSIGINT.\n");exit(0);}}6.Linux进程间通信—管道和有名管道6.管道通信的使用—无名管道的使用6.管道通信的使用—命名管道的创建与读写四、实验指导子进程1{设置忽略信号SIGINT;设置信号SIGUSR1;while(1){发送数据至管道数据;计数器++;睡眠1秒;}}