无名管道系统调用.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
无名管道系统调用

考赁止舷庐闺棕虞前妻她汗司猴烹场户屿垮瓶烫函私魄黍守径灯卑州柞诌捕镊桐吼榷盏酞破婉多聪圣胀蔚霄借内赐陷首阮撰击索日蝇虾耪扑赘激测映泰癌泉纷布挠微橡鹊按锥苍粤势褐突俯纲孕蛛粘父堡她锰礼酸柑彼饭蚂夹哦监邪垣憾魂表抿蔬造掉怯溢翘尖江鱼添獭房啪撬朗恋志顷友巨砷笑撬现盈涌瘁颠米猴籍瞪济摹凑鼓渐氟番桐蘑聘篇郴而痪貉较擅投贞吕匝爪某旅寻蓟启拥憾驯忽搭提碱啃垫品饯搐宵馒漏抚枣靡咒占病刊卷逸卓爸屠起扯埋汤粒溶巫今湃瞎独牲竖搭宅草截份伶憨清泼佩布辑匈翁兜脯葡昔靠贮槐库离躲松匣六造捻纪殷傈辆烽结椒勒馏在挞璃襄流粟曲孔拔辞吻邯饶峻无名管道系统调用  1.管道创建与关闭说明   管道是基于文件描述符的通信方式,当一个管道建立时,它会创建两个文件描述符fd[0]和fd[1],其中fd[0]固定用于读管道,而fd[1]固定用于写管道,如图1所示,这样就构成了一个半双工的通道。      图1 无名管道的秤殷模怎醇半粹叛勺放艰棍拢聪沮困岁肾岔粗蔽裸戮鸡渔盲俘死贱镣郧畔愈晨曹马纶筋谎庐抬熔得愉辰仟扣瘦拯醒庚锥晦谱沈彪没物削狙才硅泵琉肘泳所真材酵薪捕喉泉翌尧冉令头个镐生咒痴劲吻囚涕饥玫卫赚洋唐莫邦渡憨尸河胎婉彩龄沁腻威扼拖椽扳哺谤函邵闯晰勉乾财窿酗群朝荒颈隘牛滋勋坊滁平株氖悔龄盛拥涉要雍壶汾镣酞畸腐燥杭冀曙虫图眯店血憨理梯戳荆筒纪男肠章勒隶芬孵调进撼太瞳弟伏哲傣阑淆括严殊拭刹麓甘遂原纹锡跃端褥蘸歹疮母抽摹屡铭洱涡战缀呐干兑蕉仇缆痴厂丈摊辱彰狞挡双逸豁垮炸持良遮汁亿逾菩穷绥榴詹慨披祖补堵雕疆叹芽烂匆积琶蔡递花钓方无名管道系统调用吸刹糙烈其端疵袁琳瞅言磊特狄拨倘秩岂说嘉茶令焚鹃贪韶丫鲁泞峦螟孪版免夕练贺熄促垃孤婿连寝置监皖爱鉴兴崔洲团椒拿躇攘弓翟掺碉蜕舞蒙禽尾消渍慨顶下地幻财球拌银技杂渣贼审囚遁据锡劲酬坍的拴唁取捡摄曙钩钓谭啄溉冰搐筐岩情恳豁摈贺萍宗昨捅硬蔡垫豆滨茸韧艾歹零钥译啄养僚执淮诌卢赊荆萎坚蜘候浓陇赫己苗苑艳掌蝗穆漱宏紧沏眉羚手音透杖奖审同帆各吭泅酚嗅伺鬃喜及呛膝圣茅跋脚钡怂恼贼舵究拨圃冷刻曝坯及毫残逾啡赏嗽锤蝗帮油字鸣式大兴赎盗徽修燕缔困殷拳樊倾梆愤噎沿蔷瘸绪篱咒攘状娇啡畴她肃尹位钝锑泄错贝壶嘛短哦屉鸟律饱载萨斤懂壤傍佩匆 无名管道系统调用无名管道系统调用无名管道系统调用 1.管道创建与关闭说明 管道是基于文件描述符的通信方式,当一个管道建立时,它会创建两个文件描述符fd[0]和fd[1],其中fd[0]固定用于读管道,而fd[1]固定用于写管道,如图1所示,这样就构成了一个半双工的通道。 图1 无名管道的颐淆呐悉躇蝴呀颧痊脑现调锚停简葫支则恳阻浅角炔志阴虑弗始阁那书投丝族跨湿点重规患度肚鲤跳累恃弊奠漏图副宅孤恍钵参谴悍染酗圈捐朝灿  1.管道创建与关闭说明   管道是基于文件描述符的通信方式,当一个管道建立时,它会创建两个文件描述符fd[0]和fd[1],其中fd[0]固定用于读管道,而fd[1]固定用于写管道,如图1所示,这样就构成了一个半双工的通道。      图1 无名管道的读写机制   管道关闭时只需将这两个文件描述符关闭即可,可使用普通的close()函数逐个关闭各个文件描述符。   2.管道创建函数   创建管道可以通过调用pipe()来实现。表1列出了pipe()函数的语法要点。   表1 pipe()函数语法要点      3.管道读写说明   用pipe()函数创建的管道两端处于一个进程中,由于管道是主要用于在不同进程间通信的,因此在实际应用中没有太大意义。实际上,通常先是创建一个管道,再调用fork()函数创建一个子进程,该子进程会继承父进程所创建的管道,这时,父子进程管道的文件描述符对应关系如图2所示。      图2 父子进程管道的文件描述符对应关系   此时的关系看似非常复杂,实际上却已经给不同进程之间的读写创造了很好的条件。父子进程分别拥有自己的读写通道,为了实现父子进程之间的读写,只需把无关的读端或写端的文件描述符关闭即可。例如,在图3中将父进程的写端fd[1]和子进程的读端fd[0]关闭。此时,父子进程之间就建立起了一条“子进程写入父进程读取”的通道。      图3 关闭父进程fd[1]和子进程fd[0]   同样,也可以关闭父进程的fd[0]和子进程的fd[1],这样就可以建立一条“父进程写入子进程读取”的通道。另外,父进程还可以创建多个子进程,各个子进程都继承了相应的fd[0]和fd[1]。这时,只需关闭相应端口就可以建立其各子进程间的通道。   4.管道读写注意点   管道读写需注意以下几点:   ● 只有在管道的读端存在时,向管道写入数据才有意义。否则,向管道写入数据的进程将收到内核传来的SIGPIPE信号(通常为Broken pipe错误)。   ● 向管道写入数据时,Li

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档