码迷,mamicode.com
首页 > 其他好文 > 详细

socketpair双方管道

时间:2016-05-22 00:55:00      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:管道

技术分享

技术分享

技术分享

 

使用pipe只能对有血缘关系的单向管道进行通信。不过,Linux实现了一个源自BSD的socketpair调用 (3),可以实现上述在同一个文件描述符中进行读写的功能(该调用目前也是POSIX规范的一部分 (4))。该系统调用能创建一对已连接的(UNIX族)无名socket。在Linux中,完全可以把这一对socket当成pipe返回的文件描述符一样使用,唯一的区别就是这一对文件描述符中的任何一个都可读和可写。 这似乎可以是一个用来实现进程间通信管道的好方法。不过,要注意的是,为了解决我前面的提出的使用sort的应用问题,我们需要关闭子进程的标准输入通知子进程数据已经发送完毕,而后从子进程的标准输出中读取数据直到遇到EOF。使用两个单向管道的话每个管道可以单独关闭,因而不存在任何问题;而在使用双向管道时,如果不关闭管道就无法通知对端数据已经发送完毕,但关闭了管道又无法从中读取结果数据。——这一问题不解决的话,使用socketpair的设想就变得毫无意义。

本文出自 “乘法口诀” 博客,请务必保留此出处http://10706002.blog.51cto.com/10696002/1775698

socketpair双方管道

标签:管道

原文地址:http://10706002.blog.51cto.com/10696002/1775698

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!