套接字(全双工)实现进程间通信
来源:互联网 发布:搜狗关键词优化排名 编辑:程序博客网 时间:2024/06/01 09:04
特点:
sv【0】和sv【1】可读可写。每个进程固定用一个接口。
写数据时:通道不满不阻塞;
读数据时:通道里没数据时阻塞。可用fcntl设置为非阻塞。
创建:
int socketpair(int domain, int type, int protocol, int sv【2】);
参数:
domain:
套接口的域:
AF_LOCAL--------现在用法
AF_UNIX-----------以前用法
两个只是时间上的区别,历史因素,都能用。
type:
套接口类型:
SOCK_STREAM------数据流(tcp)
SOCK_DGRAM--------数据报(udp)
protocol:
协议。
必须是0。
sv:
文件描述符的指针。
sv【0】和sv【1】都可读写。
返回值:
0--------成功
-1-------出错
关闭:
close(sv【0】);
close(sv【1】);
图解:
代码:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/socket.h>#include <fcntl.h>int main(){int sv[2];if(-1 == socketpair(AF_LOCAL,SOCK_STREAM,0,sv)){perror("socketpair error");return 1;}printf("%d %d\n",sv[0],sv[1]);if(fork()){char str[]="Hello sockerpair\n";write(sv[0],str,sizeof(str));}else{char buf[BUFSIZ];read(sv[1],buf,BUFSIZ);printf("read %s\n",buf);fcntl(sv[1],F_SETFL,O_NONBLOCK);//无数据写入时,设置为读取阻塞取消。bzero(buf,BUFSIZ);read(sv[1],buf,BUFSIZ);printf("read %s\n",buf);}}
结果:
阅读全文
0 0
- 套接字(全双工)实现进程间通信
- socketpair 进程间全双工通信
- 进程间通信--管道(半双工)
- Java实现全双工串口通信
- 利用java实现串口全双工通信
- 用Winsock实现语音全双工通信
- java socket实现全双工通信
- WCF实现全双工通信笔记
- UDP全双工通信的实现
- C# Tcp 全双工通信 实现
- Linux下用管道实现进程全双工通信的代码
- 基于套接字实现本地进程间的通信
- (3)java网络socket通信---半双工、全双工
- 进程间通信-半双工管道(pipe)
- Linux进程间通信-----使用数据报套接字实现两个进程之间的通信
- 进程间通信:同步双工管道
- Linux 环境进程间通信(六) 套接字
- 进程间通信(六):unix域套接字
- rex 通过--parameter1=dbcdefg传参
- 利用Java反射机制拼接xml
- Git|从隐藏项中获取指定文件
- IT基础20
- 反射中Class.forName()和ClassLoader.loadClass()的区别
- 套接字(全双工)实现进程间通信
- 583. Delete Operation for Two Strings
- 最长递增子序列
- Spring Boot学习(四)
- springMVC系列(三)——异常统一处理
- ubuntu 安装 repo 记录
- redis操作
- 【转】整理:深度学习 vs 机器学习 vs 模式识别
- Spring详解