首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

socketpair原理_socket方法

今天跟人谈到socketpair的问题,晚上回来写了个程序验证下自己的猜测!...先说说我的理解:socketpair创建了一对无名的套接字描述符(只能在AF_UNIX域中使用),描述符存储于一个二元数组,eg. s[2] .这对套接字可以进行双工通信,每一个描述符既可以读也可以写。...string = "This is a test string"; char * buf = (char*)calloc(1 , BUF_SIZE); if( socketpair...test string"; char * buf = (char*)calloc(1 , BUF_SIZE); pid_t pid; if( socketpair...在内核中实现的一点点描述: socketpair会创建两个描述符,但改描述符不属于任何的实际文件系统,而是网络文件系统,虚拟的.同时内核会将这两个描述符彼此设为自己的peer即对端(这里即解决了如何标识读写端

74120

Android中socketpair双向通信详解

所以这里引入一个新的方法,叫“socketpair” APP通过socketpair调用得到两个文件句柄,假设这两个文件句柄是fd1和fd2,这两个文件都对应有两个缓冲区(send_buf、rcv_buf...那么如果想使用socketpair来实现任意间的进程间的双向通信怎么办? 假设现在有APP1和APP2,这两个APP想进行任意间的进程通信,那么APP2需要得到APP1的fd2才行,怎么得到呢?...可以通过binder通信,把fd2传给APP2,当然在APP2里面它就变为fd3了,这样这个任意的进程APP2就可以通过socketpair来进行通信了。...这篇暂不讲解binder的实现方式 下面讲解一下“Socketpair”的程序及使用: #include <pthread.h #include <unistd.h #include <stdio.h...我们还可以修改程序,让应用程序fork出一个子进程,然后让父子进程通过socketpair来实现双向通信,比较简单,这里就不细讲了。

86921

linux网络编程之socket(十五):UNIX域套接字编程和socketpair 函数

四、socketpair 函数 功能:创建一个全双工的流管道 原型 int socketpair(int domain, int type, int protocol, int sv[2]); 参数...domain: 协议家族 type: 套接字类型 protocol: 协议类型 sv: 返回套接字对 返回值:成功返回0;失败返回-1 实际上socketpair 函数跟pipe 函数是类似的...,也只能在同个主机上具有亲缘关系的进程间通信,但pipe 创建的匿名管道是半双工的,而socketpair 可以认为是创建一个全双工的管道。...可以使用socketpair 创建返回的套接字对进行父子进程通信: /******************************************************************.../socketpair   sending data: 1 recv data : 2  sending data: 3 recv data : 4  sending data: 5 recv

3.1K00

系列3|走进Node.js之多进程模型

socketpair 前文提到从进程实际上通过系统调用 execvp 启动新的 Node.js 实例;也就是说默认情况下,Node.js 主从进程不会共享文件描述符表,那它们到底是如何互发消息的呢?...原来,可以利用 socketpair 创建一对全双工匿名 socket,用于在进程间互发消息;其函数签名如下: int socketpair(int domain, int type, int protocol...其实,通过指定 socketpair 的第一个参数为 AF_UNIX,表示创建匿名 UNIX 域套接字(UNIX domain socket),这样就可以使用系统函数 sendmsg 和 recvmsg...进程级文件描述符表中,0-2分别是标准输入stdin、标准输出stdout和标准错误输出stderr,那么可用的第一个文件描述符就是3,socketpair 显然会占用从进程的第一个可用文件描述符。...前文提到系统函数 socketpair 可以创建一对双向 socket,能够用来发送 JSON 消息,这一块主要涉及到流操作;另外,当 sendHandle 有值时,它们还可以用于传递文件描述符,其过程要相对复杂一些

1.4K70

nginx源码阅读(6)Master进程浅析

nginx使用的是 socketpair 方法关联套接字,我们看看socketpair的原型: int socketpair(int d, int type, int protocol, int sv[...2]); 我们关注一下第四个参数,当这个socketpair函数执行成功后,就会生成一个socket对在数组中,sv[2]中的socket是关联起来的,什么意思呢?...nginx的具体的实现方式如上图所示: channel[0]和channel[0]为一对socketpair。 1. 向channel[0]写数据时,可从channel[1]读数据; 2....而nginx,只利用了第一条,即master向channel[0]写数据时,worker可从channel[1]读数据 socketpair也用来进行父子进程的通信,子进程会继承父进程的资源。...第一步,由Master进程创建socket pair,即创建channel,利用socketpair函数,master进程processes数组中存储了master与新的work的channel信息。

39621
领券