socketpair函数概要如下:
#include <sys/types.h> 定义一些C宏常量
#include <sys/socket.h> 定义socketpair函数原型
int socketpair(int domain, int type, int protocol, int sv[2]);
socketpair函数需要四个参数:
domain-套接口的域
type-套接口类型
protocol-使用的协议
sv[2]-指向存储文件描述符的指针
类型参数声明了我们希望创建哪种类型的套接口,socketpair函数的选择如下:
SOCK_STREAM
SOCK_DGRAM
对于socketpair函数,protocol参数必须提供为0。
参数sv[2]是接收代表两个套接口的整数数组。每一个文件描述符代表一个套接口,并且与另一个并没有区别。
#include <sys/types.h> 定义一些C宏常量
#include <sys/socket.h> 定义socketpair函数原型
int socketpair(int domain, int type, int protocol, int sv[2]);
socketpair函数需要四个参数:
domain-套接口的域
type-套接口类型
protocol-使用的协议
sv[2]-指向存储文件描述符的指针
类型参数声明了我们希望创建哪种类型的套接口,socketpair函数的选择如下:
SOCK_STREAM
SOCK_DGRAM
对于socketpair函数,protocol参数必须提供为0。
参数sv[2]是接收代表两个套接口的整数数组。每一个文件描述符代表一个套接口,并且与另一个并没有区别。
如果函数成功,将会返回0值。否则将会返回-1表明创建失败,并且errno来表明特定的错误号。
socketpair可以用于多进程间全双工通讯。
1.调用socketpair,成功后便有两个socket文件描述符,一个socket就像是一个pipe。
在两个socket中指定一个给父进程使用,另外一个给子进程使用。不用在意指定哪一个socket给父进程使用,随便挑一个就可以了。
2.调用fork,成功后就创建了子进程
2.1 fork返回0,那就是子进程,关闭父进程的socket,保留子进程的socket
2.2 fork返回非0,那就是父进