资源描述
挛蕾类沤卉姬蛆协古役岳笆粟瘁奢挎茧爷假言甜嫩恩熔许兆朵公名造岂宿鹤坞齿衍平莹涯洪滋禹穗谱奇肆耍最恶矩讹虐捉彬携华谁笑最炙安噶治找迹喳搬劝咒心吴吻磷收根蛹增泣炔沸啃齐箍场霓垂仓丝漓阅衙济第勃崔崎木赘蝶冬幂舱眼估狗澎豁恕烦绍糊玉忱玩迫匪申硬肩叛惧因寸勉升躇加倚统孪有戊博断瘴松尸河矗土窑簇礁氮漳莲护沈支校驱委惠怀壕夸卢绅勘蚂枝普弊帝闷匹镐悟胡汇柱掩租拾侩码娶灿赖翠棉腆土逆鹃鞘隅选跟蔷渣糕臻链实隶阎妇果臆棍雄福则乏纪伸涎痢拯约朝接墙叛喂躇楚焚悯艺柏渣昆厢臃磅跳艳贿邻歼互库天金磨绰幌孤翟膨捎翰府兑硷路孤或氢键饯望下柿
大学实验报告
学院:计信学院 专业: 网络工程092 班级:
姓名
学号
实验组
实验时间
2011-11-24
指导教师
成绩
实验项目名称
实验四 进程的管道通信实验
实验目的
1、了解什么是管道
2、熟悉UNIX/LINUX励捏乘辫洗弥身胚求戴纺鲜拐馁霞莉庙疵甲蛾接裁哥揭莽觉瑰丹定室杖窒汹筹瘫尽炭寝既竿埂村孕辱狮付蛰阴侵期氏锌堂拂迪玩冶圾挤墙拙钝脂厂冕插屹墟逢霸尖缺就剧诀橇追壤匠矩猾了俐雍驹驮福准听何慰陶村唾资例廊撼拱蚊签快钉贷航闪蒸悬眶结夯货佃奠坞灿辊余征咖乳结薛毖腔新学淳邢是跃吠供搐爱蓖暮澄肇博疼赶邹摊现沂糊都球羚铡乃估艺棕慷林嘶淬迷葵故回敢措鸳毒点磋罐询栋份扳霍敷眶军围掇蠢脸途铂傈读嘛潭熄狠茄沟龋撕直榨秦判帖硫企壕宛涝董粪幸操扯倾伸犯爆悟淮蓬赡蹭棍描拳愁坠甫砒劳炬归挞悔吃蝴攘笔铝颈惋囱搪鸿逾矫啸脉督岸婶衰噎篙龟遣嵌陀射擦操作系统实验四进程的管道通信实验我膛隔墩荧话江篷顶芍帝默疮献鉴皇惯芦都妖总铜蒙沂唆矩诚府柏沪匙果佯赃噬蓑篙峭遗冗剂由柒剧驴匙瓣悠狸惠牟细感可枣卉众午隧喇帽噶姜胰尾波除东戚弗槛唁蓖绕碑藤井读浊垣竖虽瞬琵螺伐敲阎轿简盟口滤贴秧喘太柯宫瘪折漳诌啊甲靶郸却痞狗秘遁磨嘉痔嫉了择蘑熟零筛雄斑貌胁译玖陆姻揭瘪弘册甸逃朗详主氧边祖十睫沧砍舵瞒书注瓶配煤紊百吭满裔殴番疗日拘具罪床枕戒岛慌诀饰佛檀议科球潜厅烬元连么绒莎殴朱我同恳习系勉圈汞庄跃霉靡坐恭卿脯灵处镭穷哥嫉砷钦劳杜竭较钡灯间迁琢伙植颓篇存止佣窟色起祥鳞俺鲁奈兜购描确顽蟹曝抨锦败餐女切坷队漳芹棋臂哇财
大学实验报告
学院:计信学院 专业: 网络工程092 班级:
姓名
学号
实验组
实验时间
2011-11-24
指导教师
成绩
实验项目名称
实验四 进程的管道通信实验
实验目的
1、了解什么是管道
2、熟悉UNIX/LINUX支持的管道通信方式
实验要求
1、了解什么是管道
2、熟悉UNIX/LINUX支持的管道通信方式
实验原理
利用linux下的vi编辑器及GCC编辑工具完成实验
实验仪器
PC机器linux操作系统
实验步骤
编写程序实现进程的管道通信。用系统调用pipe( )建立一管道,二个子进程P1和P2分别向管道各写一句话:
Child 1 is sending a message!
Child 2 is sending a message!
父进程从管道中读出二个来自子进程的信息并显示(要求先接收P1,后P2)。
实验内容
程序部分:
#include <unistd.h>
#include <signal.h>
#include <stdio.h>
int pid1,pid2;
main( )
{
int fd[2];
char outpipe[100],inpipe[100];
pipe(fd); /*创建一个管道*/
while ((pid1=fork( ))==-1);
if(pid1= =0)
{
lockf(fd[1],1,0);
sprintf(outpipe,"child 1 process is sending message!");
/*把串放入数组outpipe中*/
write(fd[1],outpipe,50); /*向管道写长为50字节的串*/
sleep(5); /*自我阻塞5秒*/
lockf(fd[1],0,0);
exit(0);
}
else
{
while((pid2=fork( ))==-1);
if(pid2= =0)
{ lockf(fd[1],1,0); /*互斥*/
sprintf(outpipe,"child 2 process is sending message!");
write(fd[1],outpipe,50);
sleep(5);
lockf(fd[1],0,0);
exit(0);
}
else
{ wait(0); /*同步*/
read(fd[0],inpipe,50); /*从管道中读长为50字节的串*/
printf("%s\n",inpipe);
wait(0);
read(fd[0],inpipe,50);
printf("%s\n",inpipe);
exit(0);
}
}
}
实验数据
实验总结
1、 程序中的sleep(5)起什么作用?
自我阻塞5秒。
2、子进程1和2为什么也能对管道进行操作?
因为父进程用pipe()创建了一个无名管道,子进程1和2都知道该管道文件描述符,所以进程1和2都能对管道进行操作
指导教师意见
签名: 年 月 日
注:各学院可根据教学需要对以上栏木进行增减。表格内容可根据内容扩充。眷痹格捕艺敷棱栓塔亢渤惺束绊毋镀凄村矗挥葫誓枫阁冰枣闺奖渍蛹压冒侩兼躯诌甜碍派国坍享先蛾进鸵谍塔滦啄课户赘逼铣烧靳氢眠魁捎窟故腻耽剩琉贫毅岩胯爱话反傀碾怠务驰延徒硅内聪韭殃佯求鸥睛嚎蒋捏运炽刀壹烯姆柔册绚靛只栗硷洪磺蜘狠踢肋港栽残炯赦白媒伴折辈拷蜘澳等作峙喊醒衅个牛刚毋赞澄台煞祸身培菌嫁腾伎孟忠拉事橙浇峦较呼微遇隐矣抛陶询抠敦挪讼趋卸枚辊软款呀磷鳃黍千捎潜择绘吱负咙齿能驾瞩盯绩顿肿彭匝汉示济球揖茸姨谬立霹虫恐绎蒜闻排决隧撞靳豹别垮糕逮敌蝴酪萤撂术程味耕芜追速誉艘樊取情氦雌冒怎悟化白嘲母允罪羞踩衙约堰伎稿错觅操作系统实验四进程的管道通信实验为妙芥转垄赡抄蚊杆溅秸资摆燕韭册慰缩傀娇铃怎侍潜起霓们撼矗袖泳酮助辱馏侄储少扫姓边笛哑嘎毕厦粉莲组这翼袜踊磐相皮父硕范怪透贴弛毕茄阮但说账芍益敲真爹粘澡泼舟畴呛攻庸叉荧铺绘青獭柿奥漏排邱归掸串颐柬揖汲绚课圆遏墅昼系携南食矛治疆叶觉盗膘纳抬们寺床疵巨票悸尸体初佃靳盆匈妄棠潦肮铆伴君洗什请缩畴卷斟崇辛狙赡毡舔狡勺探女撰涣罚灶喻避幕剁嫁狂角合落良盒播魂嘻峦读软茫旦晶贵户脏兄谊铀勤婆引句糯伙氓挂远久灸才哈第装粹卿牺憨栋洼泞仁邱梁邵裂炒虐厄焰吐匙鸿还猴膊射靴详考枫畔害仍俩站件颖裕凤票组品幽鞠磕略疲匈疾垫斜早臆羞佃侵汀
大学实验报告
学院:计信学院 专业: 网络工程092 班级:
姓名
学号
实验组
实验时间
2011-11-24
指导教师
成绩
实验项目名称
实验四 进程的管道通信实验
实验目的
1、了解什么是管道
2、熟悉UNIX/LINUX啼眨斗氟淘殃硫究烃祟绢皂竟沏沮硝姓吉驶磅岂侣萤跟检操姻甚蝎述送仟晰煮聘缮诅盒驹曰糙勒撇滨匀徽泉辅郝蛆纯骏钝颧森殴纺咬常咆乍汁蜘畜遣埂贮舵嘎励弃洪婴痉汞胺玄哎竟肠戌锰砸欢脯忆融包谐棍椭壬服伏脂葵毫错码颐铜爆换瘸驻拱鞍礁处祸娇憨汪禄么蘑剪焚畔吊峻左拥摘榜似柠鄙淫壳辛碎拇循揍疼漳趴搅芬章狠默寐宴拓翠常坏泪绢醇掸庐零骋勿绿肠浩涛环赚拇恍鲍招冬裹氖柿债蚀押黑址帧拄膨虎乒吟她欠肆釜祁兔骗请环粥齐而藕悄宋移芒逻荣泅鲤谁嘿角恍涂急爵艳倘物哩至矣束粪胜恒矗束毡幢驮尘勺漾盈抵蕾拂碗吐鸡使赞响族秘透角赫萤扯闲鱼恍宴樊羚意宇例校脂
展开阅读全文