1、 实验报告封面课程名称: 操作系统原理 课程代码:SS3002任课老师:邓宁宁 实验指导老师: 邓宁宁 实验报告名称: 进程之间的通信 学生姓名: 学号: 教学班: GU02 递交日期: 2014.3.26 签收人: 我申明,本报告内的实验已按要求完成,报告完全是由我个人完成,并没有抄袭行为。我已经保留了这份实验报告的副本。申明人(签名):实验报告评语与评分:评阅老师签名:一、实验名称: 进程之间的通信二、实验日期:2014.3.26三、实验目的:要求同学们掌握计算机中进程的通信的具体流程和操作四、实验环境:Pc电脑一台,虚拟机软件,以及 linux系统五、实验内容和结果:第一题:sndfil
2、e.c 代码如下:#include#include#include#include#include#include#define MAXMSG 512struct my_msglong int my_msg_type;int i;char some_textMAXMSG;msg;main()int msgid;char bufferBUFSIZ;msgid=msgget(12,0666|IPC_CREAT);while(1)puts(“Enter some text:“);fgets(buffer,BUFSIZ,stdin);msg.i+;printf(“i=%d/n“,msg.i);msg.
3、my_msg_type=3;strcpy(msg.some_text,buffer);msgsnd(msgid,if(strncmp(msg.some_text,“end“,3)=0)break;exit(0);截图如下:Rcvfile.c 代码如下 ;#include#include#include#include#include#include#define MAXMSG 512struct my_msglong int my_msg_type;int i;char some_textMAXMSG;msg;main()int msgid;msg.my_msg_type=3;msgid=ms
4、gget(12,0666|IPC_CREAT);while(1)msgrcv(msgid,printf(“You wrote:%s and i=%dn“,msg.some_text,msg.i);if(strncmp(msg.some_text,“end“,3)=0)break;msgctl(msgid,IPC_RMID,0);exit(0);截图如下所示:Sndshm.c代码如下;#include#include#include#include#include#includemain()int shmid;char *viraddr;char bufferBUFSIZ;shmid=shmge
5、t(1234,BUFSIZ,0666|IPC_CREAT);viraddr=(char*)shmat(shmid,0,0);while(1)puts(“Enter some text:“);fgets(buffer,BUFSIZ,stdin);strcat(viraddr,buffer);if(strncmp(buffer,“end“,3)=0)break;shmdt(viraddr);exit(0);截图如下:Rcvshm.c代码如下:#include#include#include#include#include#includemain()int shmid;char *viraddr;shmid=shmget(1234,BUFSIZ,0666|IPC_CREAT);viraddr=(char *)shmat(shmid,0,0);printf(“your message is :%s“,viraddr);shmdt(viraddr);shmctl(shmid,IPC_RMID,0);exit(0);截图如下;六、实验总结:代码抄完了 还是感觉不懂啊 要记得有好多啊