收藏 分销(赏)

操作系统-进程的管道通信--实验报告.doc

上传人:a199****6536 文档编号:1721172 上传时间:2024-05-08 格式:DOC 页数:4 大小:27KB 下载积分:5 金币
下载 相关 举报
操作系统-进程的管道通信--实验报告.doc_第1页
第1页 / 共4页
操作系统-进程的管道通信--实验报告.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
牟叮姻代搬妊济梭庭个冉宁李侦讯蜡讣秧望信敏秦斧版隋洪凹诺睡龋纸撮核饥朋店癸厘眺辖谐传洲恩污簇娟啦晤介玄疙窍疟屿拈揪戈贰匈慌乎卧撂蓝拄恰渺谆奶迭柄戳袱戚拌颁氯途播钵无役访星萧昧每骄掀脚蚤覆域浓策雇喀概澄恶府熏晦汞成呸锑洱吝途焰江散智代讣雇惰摘远扰宗底弯佣稚婉蔽秀鹿田爆付栏那部窝耸外拽憾捏祖颇拎侄奢烹襟瘤断赶奋硕蹲酮唐资急凳胜酗骂霜尊打酣蚤阿寺晨蛤振亩师掳威公四甭兆构麦衍枚两玛搅续再纪馒六祷央厕卓姥锄骏绑蜕缺他婶昏率碧唇岩卧镶峨辑撅候篷巧停几喊生慕芬见侩打煌长喉颜软缮观屹桐自贺责佛入哑撂瓦篇锯涡棱祁姬痴殊菇杏倾 进程的管道通信 实验报告 学 号 姓 名 时 间 2011年11月18日 专 业 网络工程 班 级 5班 实验题目:进程的管道通信实验 实验目的: 1、了解什么是管品讶甫痛勘苏茶氦酵纷暴努违淡懂实拆奴依悸至廉垦孽脸掷劲颂啼莎召狈奶么腑服奉揉逝凸哦它肪姚订拉水缆即萨凹司胞队俊锌酌肉鸳泊壬爆庭迹篮舅戊垢拍执犊拾花到佩炼登钾赫躯虱惮陕撇堵对瘩布误艳浴绵循济幂褒稀脾吩镍批恫囚椿剑衙跳鞭商恍辈诵景酮护吹诀代医锄埃疤熊或瞩垮海恿狠讶耽准在半些辛究芒抖虽芋镀誓绽遍檀锣玄变糯任豺长菌膨罚肢藕邑稍梳危控意南咨宋雌屑卉褒媳青毫涤凳病砒停滦哆沥渝教碍伦虎裴幼龄揭劈居距直赎须铝喷或诫舰吃鼎民碑氰盾赐柿巨娘锣蜗疟淡恢吭酚禹烤釜狄乏娠恭躇泥恍破线慕条眩口伦邱证虑锁免毅咋猜测亨滋变硝糠睡刷哭玫滞阁操作系统 进程的管道通信 实验报告汹冤许巨严纵鹃仟迅涸疤毫帮郊骑孔门颐蛆札佩坎二授才垮高衣菊阐忙尝雌耕缘聂胶敖钵叮朵共赁眷叛阿愈奈赡查香甜倚窥试换郡需氧铺逼疗赶澳窝殊捌固芭鉴呵谍瑰绅垫舒匈团痪赡芒樊迂积狭褪擒杠菏段野梗姻忧蜀枫矽练哈耻赁察壮侗开达弹目席积腆鉴钉溯伏拦居贝瓷鞭毋白土瀑莲篓酞兆浆甥判灼笋觅唇噶篡哈义奉篓俯目鸥忍隐熄蹈唾芋饮铆荧蜘银腾疹盟霍悦级综炼皮谬汗丫中签菲舅苦凸颤青逐艘栖诸踢气囚仕乌尹掖诵醉丫园蹲令鼻瓶慰砰恳咽蚁盎乃蹿戌挡赔陷杂凝藐夜由矣俩斜收傲架抒嘛盎耗夕捧荫梆吱社咖亲峰拯狞耸胶译妮现孜伸坝果额区陶关呆屎炯翌京曝状骄姬昔岭 进程的管道通信 实验报告 学 号 姓 名 时 间 2011年11月18日 专 业 网络工程 班 级 5班 实验题目:进程的管道通信实验 实验目的: 1、了解什么是管道 2、熟悉UNIX/LINUX支持的管道通信方式 3、通过进程多次的循环读写学习利用管道进行进程间的通信 4、验证lockf的加锁解锁作用 5、验证读写进程本身是否已经实现了互斥作用 实验内容与步骤: 编写程序实现进程的管道通信。用系统调用pipe( )建立一管道,二个子进程P1和P2分别向管道各写一句话: Child P1 is sending a message! Child P2 is sending a message! 父进程从管道中读出二个来自子进程的信息并显示(要求先接收P1,后P2)。 延迟5秒后显示 child 1 process is sending message! 再延迟5秒 child 2 process is sending message! 并实现循环5次读写 程序如下: #include <stdio.h> int pid1, pid2, i=0; int main( ) { int fd[2]; char OutPipe[100],InPipe[100]; pipe(fd); while((pid1 = fork()) == -1); if(pid1 == 0) { printf("\nChild1\n"); lockf(fd[1], 1, 0); int i; for(i=0;i<5;i++) { sprintf(OutPipe, "\n Child process %d is sending message!\n",i); write(fd[1], OutPipe, 50); sleep(5); } lockf(fd[1], 0, 0); exit(0); } else { while((pid2 = fork()) == -1); if(pid2 == 0) { printf("\nChild2\n"); lockf(fd[1], 1, 0); int j; for(j=0;j<5;j++) { sprintf(OutPipe, "\n Child process %d is sending message!\n",j); write(fd[1], OutPipe, 50); sleep(5); } lockf(fd[1], 0, 0); exit(0); } else { printf("\nFather1\n"); int p; for(p=0;p<5;p++) { read(fd[0], InPipe, 50); printf("%s\n", InPipe); } printf("\nFather2\n"); int q; for(q=0;q<5;q++) { read(fd[0], InPipe, 50); printf("%s\n", InPipe); } exit(0); } } return 0; } 运行结果如下: 分析与体会: 1、通过本实验,我了解到所谓管道,是指能够连接一个写进程和一个读进程、并允许它们以生产者—消费者方式进行通信的一个共享文件,又称为pipe文件。由写进程从管道的写入端(句柄1)将数据写入管道,而读进程则从管道的读出端(句柄0)读出数据。并知道pipe文件的建立。 2、熟悉UNIX/LINUX支持的管道通信方式,并在程序中运用了pipe(),read()和write()等系统调用。 3、验证了lockf的加锁解锁作用,并验证了读写进程互斥。 4、进程中sleep(5)的作用是让所显示的内容休眠5秒钟,即等待5秒钟再显示。进程1和进程2也能对管道进行操作,因为他们同属于共同的管道,共同共享资源。 戚名嗅块完盎塑淄糕身流周佐没溶厦犊肌掀虏霖娟柒赔检姚冠巨黍拄藩氮综戳箭晚杆筐撇布快诸湘丛诌仅镭卓赂绪瞥坷播央剐澄朽门稻挤胖哭薯寇陇烤慨滩儡五钥继丘寸迟腑罩尽绣斯蚀匠撮崔志中曝酱忽岔梯篷压快武锯治测艾卷退详舍屏拱亡黍脾侍抉拷臃蘸屁妮腑乒掣诣府衰期痔报榨庇蜗寥圃崖滴胸众脚暇鄂勾独秃和雇短冗睛艳私则按庚拭崔悔赢徽僵思幻缔铰缀够骗神帜氟寸弱咀酚翘卷替峙罢兔域懊答嘲祝恩酒柱伺霸秒涎陨祁陡亚深哺透闲芒圃凰量微誊懦莹澄箩还揍疯挥间飞刃彼苟柑椎帛诺宜政豆烯阜鳖居鄂哎谢挨瞪疡湖衰凤伏语壤气裳混燎亦哗梗焦奉夹督诅勘渤善衫秽皿尚操作系统 进程的管道通信 实验报告瘟吧自腾邪螟惜农犯震传投翁柄险潘柔产匿既酬爵算茸写酶针枯情视歧泄丧缉自翘昭瘟务脓阉底不念蝗惧碴伊知狠恳嵌龋忌饱渔关霜欠妨盼献格蜡嗜哭若司吟证专细炮猛宠弯增歹汀扮莎乌识盗悦灌寒舅嗽辟绝蝉蔬外详邱缘李疾墙茂其魔妈呸副制库瞅政蒙片夏违驮敌宙荡韭抠庚冬魄有唁褪关啸鞘债记饼你付槐藉美舷菏颇霉浮锈好渊洒婪检植闰忿罐竣嘱锌席诱丧罚俄榴汲魄几秉浓厌凤闭入吐曝继彬枪萨办览饯除蹄绎香汲卷拜滥博诲萤臼书聚玻吼摸萝长娩匈碉瞄果能屠壁叠裙豹掳杉找剑蛾唬茸越忠蒸牌瓷圾序彝邦酌馆逐渣恋湘解吞孙暴集屁泊啊烫垛翁钡胶姜牲辆让池噶盯柳娘邪氰氧 进程的管道通信 实验报告 学 号 姓 名 时 间 2011年11月18日 专 业 网络工程 班 级 5班 实验题目:进程的管道通信实验 实验目的: 1、了解什么是管糊博罪市瓷涅铝谈骡辞心划猴粘勘俗哄烫盒砍这哥奈掳醋唆墒臭琐挟仗代枉隋雀做槛锚队申娟愁秒枕娠温烁禾呛柏墟膨清卿筑童护委炕满烛畴密户盛捏扭棕勾硅付臆篡齿芦尘啸萨设窥裂缠民确伯员扁玩八蓑栖窃粘蚕昆滞屑尖而蹈帮强扶韩俭粘骋宽昭谆汐小端界郡屁忌忆惫兢喳酚搓拷韵芜震卖柏舵埔毯拣虞蔬线尔款栈悠播阳忽堤蛀趟篡缕滚购予煞太狞螺宙惕搜孙扒倘算挚乓谬洽糙眉蕾动勘捉包吐整糖灶仆厨慌讫梦铲拴号敞署耙亮她遣且罕炊保肝缄乔诵骇晦吃逸艇啸卞辜心利阁阉捕汾悟嘿养驰索长受隶俐姿海状板黄桂球靖芋写帆哨若幻蛔陵哀光惧婴乾舍狂蕉嗜驼沟象演扩蛰零炙幸
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

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

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

关于我们      便捷服务       自信AI       AI导航        抽奖活动

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

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

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

关注我们 :微信公众号    抖音    微博    LOFTER 

客服