Linux上实现双向进程间通信管道(socketpair)
来源:互联网 发布:淘宝漏洞买东西不花钱 编辑:程序博客网 时间:2024/04/28 21:31
Linux 提供了 popen 和 pclose 函数,用于创建和关闭管道与另外一个进程进行通信。其接口如下:
FILE *popen(const char *command, const char *mode);int pclose(FILE *stream);
遗憾的是,popen 创建的管道只能是单向的 -- mode 只能是 "r" 或 "w" 而不能是某种组合--用户只能选择要么往里写,要么从中读,而不能同时在一个管道中进行读写。实际应用中,经常会有同时进行读写的要求。
使用pipe就只能如此了。不过,Linux实现了一个源自BSD的socketpair调用,可以实现上述在同一个文件描述符中进行读写的功能。该系统调用能创建一对已连接的UNIX族socket。在Linux中,完全可以把这一对socket当成pipe返回的文件描述符一样使用,唯一的区别就是这一对文件描述符中的任何一个都可读和可写,函数原型如下:
int socketpair(int d, int type, int protocol, int sv[2]);参数介绍:
socketpair()函数建立一对匿名的已经连接的套接字,其特性由协议族d、类型type、协议protocol决定,建立的两个套接字描述符会放在sv[0]和sv[1]中。
第1个参数d,表示协议族,只能为AF_LOCAL或者AF_UNIX;
第2个参数type,表示类型,只能为0。
第3个参数protocol,表示协议,可以是SOCK_STREAM或者SOCK_DGRAM。用SOCK_STREAM建立的套接字对是管道流,与一般的管道相区别的是,套接字对建立的通道是双向的,即每一端都可以进行读写。参数sv,用于保存建立的套接字对。
3 0
- Linux上实现双向进程间通信管道(socketpair)
- Linux上实现双向进程间通信管道(socketpair)
- Linux 上实现双向进程间通信管道
- Linux 上实现双向进程间通信管道
- Linux 上实现双向进程间通信管道
- Linux 上实现双向进程间通信管道
- Linux 上实现双向进程间通信管道
- Linux 上实现双向进程间通信管道
- Linux 上实现双向进程间通信管道(转)
- Linux 上实现双向进程间通信管道
- Linux 上实现双向进程间通信管道
- Linux 上实现双向进程间通信管道
- Linux 上实现双向进程间通信管道
- Linux 上实现双向进程间通信管道
- Linux 上实现双向进程间通信管道
- Linux 上实现双向进程间通信管道
- Linux 上实现双向进程间通信管道
- Linux 上实现双向进程间通信管道
- 华为笔试题
- CodeForces 385E Bear in the Field
- 图像处理之仿油画效果
- hdu 1850 (nim games)
- Chromium on Android: Chromium线程局部存储(TLS)系统
- Linux上实现双向进程间通信管道(socketpair)
- 如何改变Android应用的运行环境
- HDOJ 3308 LCIS
- Thinking in BigData(五)大数据之统计学与数据挖掘
- 酷!用Qt Quick实现Metro风格的进度条
- 马上Go 2.1
- jquery瀑布流插件-在线demo预览
- NYOJ-214 单调递增子序列(二) TLE
- 黑马程序员--两个简单的实例