非阻塞IO,纪录锁,系统V流机制,I/O多路转接(select/poll),readv和writev函数以及存储 映射IO(mmap),这些统称为高级IO。
pipe用来创建管道,但是单个管道只能单向通信,⼀端用于读,⽽而另一端用于写。如果要实现进程双向通信,必须创建一对管道。
而socketpair则可以⽤用来创建双向通 信的管道,
头文件:
#include <sys/types.h>
#include <sys/socket.h>
原型:
int socketpair(int d,int protocol, int type, 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,用于保存建立的套接字对。
socketpair创建了一对无名的套接字描述符(只能在AF_UNIX域中使用),描述符存储于一个二元数组,. fd[2] .这对套接字可以进行双工通信,每一个描述符既可以读也可以写。这个在同一个进程中也可以进行通信,向fd[0]中写入,就可以从fd[1]中读取(只能从s[1]中读取),也可以在fd[1]中写入,然后从fd[0]中读取;但是,若没有在0端写入,而从1端读取,则1端的读取操作会阻塞,即使在1端写入,也不能从1读取,仍然阻塞;反之亦然……
#include <stdio.h>
#include <string.h>
#inc