




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2013-2014第二学期计算机系统平台实验指导书 王晓英实验6 进程间通信一、实验目的通过本实验了解和掌握进程间通信的相关知识,(1)了解进程通信的基本原理。(2)了解和熟悉管道通信、消息传送机制及共享存储机制。二、实验内容1. 进程的管道通信下面程序实现进程的管道通信。使用系统调用pipe()建立一条管道线。阅读源程序,完成实验任务。#include <unistd.h>#include <signal.h>#include <stdio.h>int pid1, pid2;main()int fd2;char outpipe100,inpipe100;p
2、ipe(fd);while(pid1=fork()=-1);if(pid1=0)lockf(fd1,1,0);sprintf(outpipe,"child 1 process is sending a message!");write(fd1,outpipe,50);sleep(5);lockf(fd1,0,0);exit(0);elsewhile(pid2=fork()=-1);if(pid2=0)lockf(fd1,1,0); /*mutex*/sprintf(outpipe,"child 2 process is sending a message!&quo
3、t;);write(fd1,outpipe,50);sleep(5);lockf(fd1,0,0);exit(0);elsewait(0);read(fd0,inpipe,50);printf("%sn",inpipe);wait(0);read(fd0,inpipe,50);printf("%sn",inpipe);exit(0);实验任务:(1) 读懂上面的程序,编译执行,分析为什么出现这样的执行结果。(2)解释程序中sleep(5)语句的作用。 2. 共享存储区的创建、附接和断接使用系统调用shmget()、shmat()、shmdt()和shmc
4、tl(),编制一长度为1KB的消息的发送和接收程序。阅读下面的源程序,完成实验任务。#include <sys/types.h>#include <sys/shm.h>#include <sys/ipc.h>#include <errno.h>#include <unistd.h>#include <stdio.h>#include <stdlib.h>#define SHMKEY 75int shmid,i;int *addr;int p1,p2;CLIENT() int i; shmid=shmget(SH
5、MKEY,1024,0777); addr=shmat(shmid,NULL,0); for(i=10;i>=1;i-) while(*addr!=-1); printf("(client)sent:%dn",i); *addr=i; exit(0);SERVER() shmid=shmget(SHMKEY,1024,0777|IPC_CREAT); addr=(int*)shmat(shmid,NULL,0); do *addr=-1; while(*addr=-1); printf("(server)received:%dn",(*addr);
6、 while(*addr>1); shmctl(shmid,IPC_RMID,0); exit(0);main() p1=fork(); if(p1) SERVER(); system("ipcs -m"); p2=fork(); if(p2) CLIENT(); wait(NULL); wait(NULL);实验任务:分析程序运行机制和过程,写出并分析程序运行结果。(提示:多运行几次这个程序,观察ipcs m的执行结果)3. 消息的创建、发送和接收实验任务:使用系统调用msgget()、msgsnd()、msgrcv()及msgctl()编制一个与内容2(共享存储区
7、,如上)功能相同的程序,并分析程序运行结果。4. 信号机制实验任务:在Linux下编程,主进程用fork()创建两个子进程。主进程重复显示一首歌词(任一你喜欢的歌曲皆可),其间当该程序收到窗口传来的kill命令信号时(如使用Ctrl+C传来的中断信号),显示“我是机器猫,不止九条命!”,然后继续显示歌词,并向两个子进程分别发送中断信号;子进程1收到中断信号后,显示“我是大儿子,我生的伟大!”,并结束运行;子进程2收到中断信号后,显示“我是小儿子,我死的光荣!”,并结束运行。主进程等待两个进程均结束之后,输出“我是父亲,伤心啊,再见!”后终止运行。提示:1)利用系统调用signal()指定进程捕
8、捉不同类型的中断信号后如何动作;2)主进程可以利用系统调用kill()向子进程发送中断信号。3)Ctrl+C键产生的信号是SIGINT实验结果:任务一:实验任务:(2) 读懂上面的程序,编译执行,分析为什么出现这样的执行结果。答:因为分别将子进程写入fd1中去,然后在fd0中打印出来。(2)解释程序中sleep(5)语句的作用。 答:主要起休眠作用,如果不休眠5秒,就回一下子打印出来,无法体现管道传送的过程。任务二:实验任务:分析程序运行机制和过程,写出并分析程序运行结果。(提示:多运行几次这个程序,观察ipcs m的执行结果)任务三:代码如下:#include<stdio.h>#
9、include<unistd.h>#include<stdlib.h>#include<sys/types.h>#include<sys/msg.h>#include<sys/ipc.h>#include<sys/wait.h>#include<string.h>#define MSGKEY 75struct msgformlong mtype;char mtext1030;msg;int msgqid,i;void CLIENT()msgqid=msgget(MSGKEY,0777);msg.mtype=1;
10、strcpy(msg.mtext,"hello,world!n");printf("(client)sentn");msgsnd(msgqid,&msg,1024,0);void SERVERmsgqid=msgget(MSGKEY,0777|IPC_CREAT);msgrcv(msgqid,&msg,1030,1,0);printf("(server)receiver:%sn",msg.mtext);msgctl(msgqid,IPC_RMID,0);main()system("ipcs-q");
11、if(fork()SERVER();else CLIENT();wait(0);wait(0);任务四:代码如下:#include <stdio.h>。、#include <stdlib.h>#include <signal.h>int p1,p2,i;void methodfunc() printf("n我是机器猫,我有九条命!n"); kill(p1,160); kill(p2,170);/ exit(0);void child1() printf("n我是大儿子,我生的伟大n"); exit(0);void child2() printf("n我是小儿子,我死的光荣n"); exit(0);main() p1=fork(); if(p1=0) while(1) sleep(1); signal(160,child1); signal(SIGINT,child1); p2 = fork(); else p2 = fork(); if(p2=0) while(1) sleep(1); signal(170,child2); signal(SIGINT,child2); for(i=0;i<10;i+) sleep(1); pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 灭菌物品装载课件
- 博士创新站申请书
- 岗位竟聘申请书
- 2025-2030工业气体分离提纯技术能效改进与下游应用拓展趋势研究报告
- 单独二胎生育申请书
- 2025-2030工业机器人核心部件国产化进程与智能制造升级需求匹配度分析报告
- 2025-2030工业机器人智能化升级趋势与未来市场格局预测报告
- 更有效的安全培训方式课件
- 2025-2030工业无人机巡检行业数据处理与行业解决方案分析报告
- 2025-2030工业废水零排放处理技术路线比较与成本效益分析报告
- 2025年自考《艺术概论》考试复习题库(含答案)
- 人工智能深度学习概念与应用测试卷
- 小学道德与法治理论培训
- 离子检验-教案-
- GB/T 12643-2025机器人词汇
- 《酒店服务礼仪培训》课件
- Unit 5 Lesson 20 The Spring Festival Is Coming!(说课稿)-2024-2025学年冀教版(三起)英语五年级上册
- 挤出机生产线安全操作规程
- 药品采购与供应链管理
- 智能悬架系统集成开发关键技术与实践-2024-12-技术资料
- 函数与基本初等函数 章节总结(解析版)-2025年高考数学一轮复习(新高考专用)
评论
0/150
提交评论