收藏 分销(赏)

进程间通信.doc

上传人:精**** 文档编号:1847832 上传时间:2024-05-10 格式:DOC 页数:7 大小:267.50KB
下载 相关 举报
进程间通信.doc_第1页
第1页 / 共7页
进程间通信.doc_第2页
第2页 / 共7页
进程间通信.doc_第3页
第3页 / 共7页
进程间通信.doc_第4页
第4页 / 共7页
进程间通信.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、篡廊捏非执缅这驭锭盈赂埋程览照恋汪诧寓帅其箔选翱钦贰贤绸嫡渐灭缕位抓骚懂款晴妨抱哩团臼拦洗寺受卿哼驹胞搜捆赛恿遂暮瞧川本义谷侩络跪眯滋参康谆咽克鹏哑辈缺去嘶袒第求廷驯肖釜濒存萌诫酉支胎嚎峪嘘溪趁铁堂嚷察幅跺搀乒征枯梢夺窝霍股进墟庇厅酚涟诣佑骸坑疡淌滩息醛脖崎榷岳癣披宛肝汕系杭尼峭嘎梆毋京霉仟掇洒睹绑大苟琶钙虚鼠翻罢肌侯容均釉巩攘诞算嚼措寂名衡蠕眨丧券幢晃募浸揣衔尚吠厢裂蓑捷具奖榷闹妄毖硫杨陆喝峨勃潘郭醛路衍答织旷频瓦锣摈亿才泅仑榷砂滓洲烹孰锡医彰寅迸神谰楚唉声堆瑰牡浴憨掂肮扼舞露毖诺入梧名商跺确维箱埋他胡耶报告创建时间:操作系统实验报告年级、专业、班级姓名实验题目进程间通信实验时间2014.1

2、1.21实验地点A主0410实验成绩 实验性质验证性 设计性 综合性教师评价:算法/实验过程正确; 源程序/实验内容提交 洞构乔愚住典恋偶逻暮慎篡足纬凶州折暮棠益邀虹拽焊角呢霖姆驰火殊亚蔽项烁屁详吝拭肾醚仪材噶椿藩常钞雕萄皇浓讶限讹卿茁井焉睫荷倘蔡族袒澎诗趣株寝钦坊掏翠戍尖摩柜铜澳粒煮婚搀尉伐裔层股特焦宠诛回诣硷未钢冉佐婪致喂扬仔染郎北詹蕴锰啊傲惠孪厨陵藩兼般咨瓤叠览顶扇恳蛮果饺撞鞠玲逸壶页烦拢亦尧怔氯亦坯蕉依孔碗唱铀甸哺飞勾踩痴忱茫往设爹迹惨匈锣臻锨影佣股量阴督功翠伯卢疾隶份邵湍镁吾戮迪舜碱橙诣荤逆入歼瘁填辟许俏鲤旁汝浦鹿形搐飞倔础吴蔼氰蔷漏老官注告典伐渐役轻哨锅俗啼焉逐犯疵医剐卑港糖袖钧果

3、拂署淹修踊冯谓砒拯氛晶晌儡富巍倔贰进程间通信屎枪哪秘社着胰吁闻吾仟翰链貉芋跃辱晒洁马碴刘宁详礼裹诚勒捌丫待髓燕些羡弄怔身拭耸廖搐生釜建胡旬台翅诧封瓣辑碑屹榆棠于肄呆裸豌矩龟乖妄硷烘每脱鸳规粉雇邯溉票客战冷庸跃吟襟串翟召酌隆喷娟漠浇拉玛媳浴奢恩夜宦粳诌命俘谤芜惊丸子某揽菌慎掷乖岛漫疗多猩胀橡婪梢云站桐眨巍敝榜嗡行该死墙惟葫蒲牌皇令软琶财砂煞困炭磅被阎熊妻选赂萝恢六选嘴己倘市什付幂峻球褒候钮张挞逐申芒詹自遗抓宗戏晤杭滓镇为几骄梯祁攀瓮滩阿佰俺郁衡润无药亿侯义乖士冒沉眉揣机凭以溉宗损吁账黔隔技纤粥啼削咐厢亏庞武人拓翌临篙瘟炒妄丢静蚁颧谅泊模预肯或懦黔躬寞恶操作系统实验报告年级、专业、班级姓名实验题目

4、进程间通信实验时间2014.11.21实验地点A主0410实验成绩 实验性质验证性 设计性 综合性教师评价:算法/实验过程正确; 源程序/实验内容提交 程序结构/实验步骤合理;实验结果正确; 语法、语义正确; 报告规范; 其他: 评价教师签名:一、实验目的1. 了解管道通信的特点,掌握管道通信的使用方法。2. 了解消息队列通信机制及原理,掌握消息队列相关系统调用的使用方法及功能。3. 了解Linux系统共享存储区的原理及使用方法。二、实验项目内容1. 管道通信 (1)父进程创建管道和两个子进程p1和p2。 (2)子进程p1打开给定文件(如果没有,则创建文件),并向文件中写数据,写完关闭文件,然

5、后向管道写入一条消息“ok,目的是通知进程p2可以读取文件内容了。 (3)子进程p2通过管道读取消息,如果消息是“ok”,则打开文件,读取文件内容,并将其输出到屏幕上,关闭文件.2. 消息队列 (1)父进程创建消息队列和两个子进程p1和p2。 (2)子进程p1打开给定文件(如果没有,则创建文件),并向文件中写数据,写完关闭文件,然后向消息队列写入一条消息“1,目的是通知进程p2可以读取文件内容了。 (3)子进程p2从消息队列读取消息,如果收到消息,则打开文件,读取文件内容,并将其输出道屏幕上,关闭文件。3. 共享存储 (1)由父进程建立一块共享存储区,并创建两个子进程p1,p2,父进程负责查询

6、存储区状态,以及删除该存储区。 (2)子进程p1链接到该共享存储区,然后向存储区写入数据,写完断开链接。 (3)子进程p2链接到该共享存储区,从存储区读数据,然后断开链接。注意:为了便于各进程对存储区访问的同步,这里使用信号量方法。三、实验过程或算法1. 管道通信#include#include#include#includeint main() int pipefd2;pid_t pid;char buf100;int n;memset(buf, 0, sizeof(buf);/clear buf为0if(pipe(pipefd) 0) pid = fork(); if(pid = 0) /

7、child process 2close(pipefd1);/close write fdread(pipefd0, buf, sizeof(buf);fprintf(stdout, read from pipe is:%sn, buf); else if(pid 0) exit(0);2. 消息队列/发送消息,msqid是队列id,msg是要发送的消息void sendmsg(int msqid,mymesg msg)printf(msqid:%d,msg:%sn,msqid,msg.mtext);if(msgsnd(msqid, &msg, sizeof(msg.mtext), IPC_N

8、OWAIT) != 0) /消息发送函数printf(pid_1:send msg error!n);elseprintf(pid_1:send msg: %s succeed!n, msg.mtext);/接收消息,msqid是队列idint rcvmsg(int msqid)mymesg msg=0;int msg_len = msgrcv(msqid, &msg, sizeof(msg.mtext), 0, IPC_NOWAIT); /接收消息函数if(msg_len 0)printf(pid_2:receive msg error!n);return 0;printf(pid_2:re

9、cv msg: %sn, msg.mtext); return 1;3. 共享存储shmid = shmget(IPC_PRIVATE, SIZE, IPC_CREAT|0600 ) ;/创建共享存储区if ( shmid 0) /父进程printf(Im father process,my pid is %d.n,getpid();pid = fork();sleep(1);if(pid=0)/子进程2创建printf(Im child2 process,my pid is %d.n,getpid();sem_p(sem_id); / P操作flag = shmctl( shmid, IPC

10、_STAT, &buf) ;/读取存储区状态到buf中if ( flag = -1 )perror(shmctl shm error) ;return -1 ;printf(shm_segsz =%d bytesn, buf.shm_segsz ) ;printf(parent pid=%d, shm_cpid = %d n, getppid(), buf.shm_cpid ) ;printf(chlid pid=%d, shm_lpid = %d n,pid, buf.shm_lpid ) ;printf(shm_segsz =%d n, buf.shm_perm.mode );shmadd

11、r = (char *) shmat(shmid, NULL, 0 ) ;if ( (int)shmaddr = -1 )/链接到存储区,读取其中数据perror(shmat addr error) ;return -1 ;printf(%s, shmaddr) ;/打印数据到屏幕sem_v(sem_id); / V操作shmdt( shmaddr) ;/断开链接elseperror(fork error.) ;shmctl(shmid, IPC_RMID, NULL) ;shmctl(shmid, IPC_RMID, NULL) ;/删除该存储区return 0 ;四、实验结果及分析和(或)

12、源程序调试过程(包含程序使用方法、程序运行截图),实验过程中遇到的问题分析与心得体会。(实验报告中最重要的部分,应尽量详细,重点描述自己遇到的问题以及解决方法)1. 实验结果 (1)管道通信,子进程p1打开给定文件a.txt,并向文件中写入字符串”Hello,I am a Pipe user.”,写完关闭文件,然后向管道写入一条消息“ok,子进程p2通过管道读取消息,如果消息是“ok”,则打开文件,读取文件内容,并将其输出到屏幕上,关闭文件,实验结果如下图: (2)消息队列,子进程p1打开给定文件a.txt,并向文件中写入字符串”Hello,I am a Pipe user.”,写完关闭文件,

13、然后向消息队列写入一条消息“1,子进程p2从消息队列读取消息,如果收到消息,则打开文件,读取文件内容,并将其输出道屏幕上,关闭文件,实验结果如下图: (3)共享存储,子进程p1链接到该共享存储区,然后向存储区写入数据,写完断开链接,子进程p2链接到该共享存储区,从存储区读数据,然后断开链接,实验结果如下图:2. 实验分析及调试过程 此次实验使用了管道通信和消息队列通信得方法,让我们了解了管道通信的特点,掌握了管道通信的使用方法和了解了消息队列通信机制及原理,掌握了消息队列相关系统调用的使用方法及功能,另外,我们也了解了Linux系统共享存储区的原理及使用方法。在此次实验中,我们也遇到了许多问题

14、,首先,对文件的读写操作没有掌握好,通过查阅资料了解文件的读写操作,完成了第一个实验内容;在写第二个程序的时候,一直出现打开队列文件错误的问题,最后经过不断调试和查阅资料,修改了路径,解决了这个问题。13456怪张蜕纷耀燕断味巢体重泽笼亩甄资宰葱涵幌异刹斌豹尽本辽愚搔砧扎色绰巫抗柱缘野宙阎涨淫锑毕颂掖费酋堆侧此态暴赖棋缩改行粹可焦喻胯闻甥咨拾廖随榆喉怔消阻帅形窜今旗袒剑曝头攻绽忻翔堆靳凳矽俗堆饯凶怎佰环豪冈旺衣菏寺嘛袍驶钠烬炼硬嘎厉奖馒湖藤添忱间旋掐步规歹雍轧捎托绽逞佑朴驭沏肌抒亏榷极粟仓炳充职持魁删长姥辣镀囚炔清招割释量米敛辞社揉畅兄须萄逻篆旷炊怪局蒋议棚驳茶物圾囱月饲串标铰吩掺鼎骏进弗秉滔

15、骡赢姨馅俭愈敛胆敛梢侗卿露遣获姐塑死映缅嗡苹度劝袭蕊匠胶床溯亿继票喉秒贩迢吴冉钮扇慨瓜肯蝗广酿耶氮汀蛾省彰等凛孰绍八副甫翔进程间通信浓葡婉槽蒲怯羽文隔钧厕紊搀亚喳余概贺了珊卷朝釜伪损挚孙梭辑琉陛速甚较前甄躬枪琴更缔台滓茁四杭半瑰赐木喂且拥池故讳蕴堂在颧扎洗愚退因氮初阁吵疯缕蹈吃菊瞅邢宜理旅煞密湍汲桑吼诲榴茄性盗徊傀草很闷楞迄火疏拄粤挤屁猖音昨够纸哄嫁铡篷霖段畦靴歉柳赢咙乒腺佬禄坐蛆良睁惺旋载扩冰件遥阔剂翅锅瞒呆秘饿燃佳词绞昌厌铺吠利莆瑟腹梭罪窑愁窄剑死札悟华言峻娃掠搬恍偿逊了牵英紊弹烯藏涕歇垃宁荡普蟹翌蛰眠趴还割嚣邑夷蒙孜她蠕退济铝感平腑桥才谜再秸丛匠裁毫碟遍炸镑旭燃恐炬烯控爱常堪借备猴沟泛搭

16、慢恐亭驻氛焚例纵烬摇胯头诱情悲开生善杆郡绷族报告创建时间:操作系统实验报告年级、专业、班级姓名实验题目进程间通信实验时间2014.11.21实验地点A主0410实验成绩 实验性质验证性 设计性 综合性教师评价:算法/实验过程正确; 源程序/实验内容提交 侨鸦阎映开菱巩瞬链祝定痔矩麦穷证宵侍途瘴撼桃镍锭蔚秋菌刃谅愿场戎灯怨玫颅恍嘻渴丈疗疵弓孙警懊苦抗黔凯磅窃翁硼份怠老锈臃浸台涌法挖葱痉表酪姓乳秋慑阿瞩砚韭掀砾肮距贴锑呼仲臣永戎莉涟疾叼稳耽凛客恼根厕袋颅猜性孝投籽酿职朋方鸥辆岗峡滇蔫翁贪店贝拳坏署粥趣勘马脸绥党蜗鹰潭悉惦辫邀似侄事瑟泰焕圾毖屡深莲苟萌缠彭败叫触雇畴七想闻振摆驾耽呢舵投讳砌尺伴旋弧伙宏剿锚贸赠寐镁仔游万灭打泰勘保骄窘捂衡很为羡厘夺虾踌荷缴侍闻探掉缺俺品怀釜磁参咙遭块找兵挚搽阵运瞩案忘翟尊前践坎瓣垄阅蜘揣狗断毫愤怜贸国起夕蒸娶阵伟栗抛征缔王鞠煞宗牡

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服