socketpair
与pipe的区别
pipe产生的文件描述符是半双工的,需要pipe两次才能实现全双工,产生的两个描述符是一个读,一个写
socketpair直接就可以全双工,产生的两个文件描述符的任何一个都可读可写
pipe例子
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main(){
int fd1[2],fd2[2];
if(pipe(fd1) < 0 || pipe(fd2) < 0)
exit(-1);
if(fork()){
int val=0;
close(fd1[0]);
close(fd2[1]);
while(1){
sleep(1);
++val;
printf("parent send: %d\n",val);
write(fd1[1],&val,sizeof(val));
read(fd2[0],&val,sizeof(val));
printf("parent received: %d\n",val);
}
}else{
int val;
close(fd1[1]);
close(fd2[0]);
while(1){
read(fd1[0],&val,sizeof(val));
printf("son Data received: %d\n",val);
++val;
write(fd2[1],&val,sizeof(val));
printf("son send: %d\n",val);
}
}
}
socketpair例子
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(){
int fd[2];
int ret;
ret=socketpair(AF_LOCAL,SOCK_STREAM,0,fd);
if(ret < 0){
perror("socketpair");
exit(-1);
}
if(fork()){
int val=0;
close(fd[1]);
while(1){
sleep(1);
++val;
printf("parent sending data: %d\n",val);
write(fd[0],&val,sizeof(val));
read(fd[0],&val,sizeof(val));
printf("parent Data received: %d\n",val);
}
}else{
int val;
close(fd[0]);
while(1){
read(fd[1],&val,sizeof(val));
printf("son Data received: %d\n",val);
++val;
write(fd[1],&val,sizeof(val));
printf("son send received: %d\n",val);
}
}
}
socketpair的更多相关文章
- socketpair理解
转载:http://liulixiaoyao.blog.51cto.com/1361095/533469/ 今天跟人谈到socketpair的问题,晚上回来写了个程序验证下自己的猜测! 先说说我的理解 ...
- [转] IPC之管道、FIFO、socketpair
管道和FIFO作为最初的UNIX IPC形式,现在已用得较少.SocketPair可作为全双工版本的管道,较为常用,这里简单做个笔记 管道 * 只用于有亲缘关系的进程间通信 * 单向,即半双工 (双向 ...
- socketpair的使用
socketpair函数概要例如以下:#include <sys/types.h>#include <sys/socket.h>int socketpair(int domai ...
- socketpair创建双向通信的管道(全双工通信)
Linux下socketpair介绍: socketpair创建了一对无名的套接字描述符(只能在AF_UNIX域中使用),描述符存储于一个二元数组,例如sv[2] .这对套接字可以进行双工通信,每一个 ...
- UNIX网络编程——UNIX域套接字编程和socketpair 函数
一.UNIX Domain Socket IPC socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket.虽然网络soc ...
- c/c++ linux 进程间通信系列3,使用socketpair,pipe
linux 进程间通信系列3,使用socketpair,pipe 1,使用socketpair,实现进程间通信,是双向的. 2,使用pipe,实现进程间通信 使用pipe关键点:fd[0]只能用于接收 ...
- 输入系统:进程间双向通信(socketpair+binder)
一.双向通信(socketpair) socketpair()函数用于创建一对无名的.相互连接的套接子,如果函数成功,则返回0,创建好的套接字分别是sv[0]和sv[1]:否则返回-1,错误码保存于e ...
- socketpair初识
#include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/typ ...
- Libevent学习之SocketPair实现
Libevent设计的精化之一在于把Timer事件.Signal事件和IO事件统一集成在一个Reactor中,以统一的方式去处理这三种不同的事件,更确切的说是把Timer事件和Signal事件融合到了 ...
- UNIX域套接字编程和socketpair 函数
一.UNIX Domain Socket IPC socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket.虽然网络soc ...
随机推荐
- Express 2015 RC for Windows 10 安装
支持的操作系统 Windows 10 Technical Preview 硬件要求 1.6 GHz 或更快的处理器 1 GB RAM(如果在虚拟机上运行,则为 1.5 GB) 4 GB 可用硬盘空间 ...
- 四轴飞行器飞行原理与双闭环PID控制
四轴轴飞行器是微型飞行器的其中一种,相对于固定翼飞行器,它的方向控制灵活.抗干扰能力强.飞行稳定,能够携带一定的负载和有悬停功能,因此能够很好地进行空中拍摄.监视.侦查等功能,在军事和民用上具备广泛的 ...
- 一、VS支持Vue语法
一.VS支持Vue语法
- 02cython调用c++文件
https://blog.csdn.net/ztf312/article/details/77340300 此时用python setup.py build_ext --inplace编译时报错如下: ...
- gay绿论第一章两点注意事项
1.不可能事件的概率为0,但概率为0的事件不一定是不可能事件,例如从自然数中取一个数结果是1的概率,从极限角度看,分子是1,分母是∞,结果是0,但它显然是有可能发生的,所以不是不可能事件. 2.两事件 ...
- oracle 汇编04
General-Purpose Instructions The general-purpose instructions perform basic data movement, memory ad ...
- 切面AOP的切点@Pointcut用法
格式: execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern ...
- pandas数据查询(数值、列表、区间、条件、函数)
import pandas as pd # 0 读取数据 df = pd.read_csv("文件路径")#例子是北京一年的天气情况 df.head()#查看表头 # 设定索引为日 ...
- Flsak中的socket是基于werkzeug实现的。
from werkzeug.serving import run_simple from werkzeug.wrappers import Request,Respinse @Request.appl ...
- Python---基础-小游戏用户猜数字
一.10 < cost < 50 的等价表达式 cost = 40 10 < cost < 50 (10 < cost) and (cost < 50) 二.使用i ...