socketpair 「爱情、让人受尽委屈。」 2022-07-18 00:27 106阅读 0赞 pipe用来创建管道,但是单个管道只能进行单向通信,一顿用于读,一段用于写,如果要实现进程双向通信,必须创建一对管道。 而socketpair则可以用来创建双向通信的管道具体实现如下: 实现,打开的还是一个文件,fd\[0\],fd\[1\],管道中f\[0\]读端,f\[1\]写端。 \#include <sys/types.h> \#include <sys/socket.h> int socketpair(int domain, int type, int protocol, int sv\[2\]); domain:选用AF\_LOCAL; type:SOCK\_STREAM protocol:默认0 ![wKioL1dAJWiha3BLAABcQg5Afhs261.png][] #include<stdio.h> #include<stdlib.h> #include<sys/types.h> #include<sys/socket.h> #include<string.h> int main() { int fd[2]; if(socketpair(AF_LOCAL,SOCK_STREAM,0,fd)<0){ perror("sockpair"); return 1; } pid_t id=fork(); if(id<0){ perror("fork"); return 2; } else if(id==0) { close(fd[0]); char buf[1024]; while(1) { strcpy(buf,"hello world"); write(fd[1],buf,strlen(buf)); ssize_t _s=read(fd[1],buf,sizeof(buf)-1); buf[_s]='\0'; printf("father->child:%s\n",buf); sleep(1); } close(fd[1]); } else { close(fd[1]); char buf[1024]; while(1) { ssize_t _s=read(fd[0],buf,sizeof(buf)-1); if(_s>0) { buf[_s]='\0'; printf("child->father:%s\n",buf); sleep(1); } strcpy(buf,"hello mygirl"); write(fd[0],buf,strlen(buf)); } close(fd[0]); } return 0; } ![Center][] [wKioL1dAJWiha3BLAABcQg5Afhs261.png]: /images/20220717/cfe7227887b546baa274b4f6ecc613e4.png [Center]: /images/20220717/8e629d4f4414465893f5f0678f227fe6.png
相关 socketpair函数用法 Unix套接字好像是套接字和管道的混合,socketpair()可以创建一对无命名的、相互连接的Unix域套接字。 管道历史上,它们是半双工的(数据只能在一个方向上流动),但 谁践踏了优雅/ 2024年03月22日 05:59/ 0 赞/ 55 阅读
相关 Unix/Linux编程:socketpair 理论 [管道][Link 1]内部传输的是字节流,TCP [socket][]传输的也是字节流,区别在于: 应用层程序能够往一个TCP连接中写入多少字节的数据,取 待我称王封你为后i/ 2022年12月28日 11:28/ 0 赞/ 93 阅读
相关 Linux网络编程 -- socketpair的使用 socketpair的使用 Linux实现了一个源自BSD的`socketpair`调用,可以实现在同一个文件描述符中进行读写的功能。 该系统调用能创建一对已连接的U 刺骨的言语ヽ痛彻心扉/ 2022年08月20日 08:25/ 0 赞/ 103 阅读
相关 socketpair pipe用来创建管道,但是单个管道只能进行单向通信,一顿用于读,一段用于写,如果要实现进程双向通信,必须创建一对管道。 而socketpair则可以用来创建双向通信的管道具体 「爱情、让人受尽委屈。」/ 2022年07月18日 00:27/ 0 赞/ 107 阅读
相关 将binder和socketpair结合实现任意进程间的双向通讯 binder机制是Android系统中特有的实现进程间远程通信的机制,它是基于C/S模式来实现的,一般一个是client端,一个是server端;而socketpair机制可以 àì夳堔傛蜴生んèń/ 2022年06月16日 04:55/ 0 赞/ 395 阅读
相关 linux编程基础:使用socketpair实现双向通讯 socketpair是linux提供的一种双向通讯机制,它通过socket实现双向通讯。socketpair本身虽然实现了双向通讯的功能,但是也存在一些限制:比如只能在一个进程 我不是女神ヾ/ 2022年06月16日 04:13/ 0 赞/ 193 阅读
相关 进程间通信之socketpair socketpair是进程间通信的一种方式。 API: int socketpair(int domain, int type, int protocol, int 绝地灬酷狼/ 2022年01月06日 10:51/ 0 赞/ 238 阅读
相关 python-kafka源码解析之socketpair socket基本操作包括: socket()函数创建socket文件描述符,唯一标识一个socket。 bind()函数,将ip:port和socket绑定 lis 雨点打透心脏的1/2处/ 2021年12月09日 00:05/ 0 赞/ 226 阅读
还没有评论,来说两句吧...