分享

socketpair()函数介绍

 xiao_lc 2015-07-24

函数原型:

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,用于保存建立的套接字对。

    socketpair创建了一对无名的套接字描述符,描述符存储于一个二元数组fd[2],可以从fd[0]写入fd[1]读出,也可以从fd[1]写入fd[0]读出,如果没有写入就读出则会发生阻塞。用途:用来创建全双工通道,而避免了创建两个管道的麻烦,不过只局限于父子进程之间
例子:
    #include <stdio.h>
    #include <unistd.h>
    #include <sys/socket.h>
    main()
    {
        int fd[2];
        char buf[20]={};
        char re[20]={};
        socketpair(AF_LOCAL,SOCK_DGRAM,0,fd);//创建无名套接字描述符号
        printf("%d\n",getpid());
        write(fd[1],"hellow",12); 写入
        read(fd[0],re,20); 读出
        printf("::%s\n",re);
        close(fd[0]);
        close(fd[1]);
    }
注意:父子进程在通信时候,必须关闭一个描述符号,是因为一个再写的时候另外一个只能读

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多