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 ...
随机推荐
- python学习三十九天filter() map()用法及lambda搭配使用
python函数中的 filter() map() 前者是过滤的,后者是映射关系,需要与函数搭配使用,这时候匿名函数派上用场了,用简单的表达式就可以显示比较复杂的功能 1,python函数 filte ...
- A.Gennady and a Card Game
http://m3.codeforces.com/contest/1097/problem/A Gennady and a Card Game time limit per test 1 second ...
- python学习笔记(12):高级面向对象
一.__slots__和property 1.__slots__魔术函数动态的添加方法和属性 2.直接暴露属性的局限性 3.使用get/set方法 4.利用@property简化get/set方法 5 ...
- 原生JS实现图片循环切换
<!-- <!DOCTYPE html> <html> <head> <title>原生JS实现图片循环切换 —— 方法一</title&g ...
- 体验一把haskell
这几天做到PAT一道比较数据大小的题PAT1065,题目不难,应该说是一道送分题,就是开数组,然后模拟人工计算的过程进行计算,再比较下就行.做完之后,联想到haskell的Integer类型是无限大的 ...
- tf.nn.top_k
评估操作对于测量神经网络的性能是有用的. 由于它们是不可微分的,所以它们通常只是被用在评估阶段 tf.nn.top_k(input, k, name=None) 这个函数的作用是返回 input 中每 ...
- [python 学习] logging模块
1.将简单日志打印到屏幕: import logging logging.debug('debug message') logging.info('info message') logging.war ...
- bzoj4811 [Ynoi2017]由乃的OJ 树链剖分+贪心+二进制
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4811 题解 我现在为什么都写一题,调一天啊,马上真的退役不花一分钱了. 考虑这道题的弱化版 N ...
- Zabbix分布式监控系统实践 自定义配置
https://www.zabbix.com/wiki/templates/start 环境介绍OS: Ubuntu 10.10 Server 64-bitServers:zabbix-server: ...
- tuple写法
name = ("wen") 类型为strname = ("wen",) 类型为tuple