版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 5504-2025粮油检验小麦粉加工精度检验
- 公司水泥制成工岗位职业健康技术规程
- 织布上轴工合规化技术规程
- 脂肪醇胺化操作工安全应急能力考核试卷含答案
- 公司夹具钳工工艺技术规程
- 公司温差电致冷器件制造工设备技术规程
- 电子设备波峰焊装接工岗位安全技术规程
- 石英手表装配工岗前客户服务考核试卷含答案
- 糖汁蒸发工冲突解决能力考核试卷含答案
- 2025年德阳广汉市中小学教师招聘笔试备考试题及答案解析
- 技术授权生产协议书
- 2025山西医药学院招聘人事代理人员7人笔试考试备考题库及答案解析
- 寺庙修缮工程协议书
- YY/T 1994-2025采用机器人技术的血管介入手术控制系统
- 物流行业仓储管理岗位货物调度效率考核表
- 5.2 少年当自强 教案 2024-2025学年统编版道德与法治九年级下册
- 酿造酒工艺与品鉴培训
- 2025年及未来5年中国卫生杀虫剂行业市场供需格局及行业前景展望报告
- 深圳市城市更新培训课件
- 锅炉的运营管理制度
- 【普通高中地理课程标准】日常修订版-(2017年版2025年修订)
评论
0/150
提交评论