博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
共享内存:全双工匿名管道
阅读量:5776 次
发布时间:2019-06-18

本文共 1287 字,大约阅读时间需要 4 分钟。

//main.cpp#include 
#include
#include
#include
using namespace std;//两个进程共享驻留在内核中的信息。每次訪问共享信息的操作就涉及系统调用。

 void EXIT(int arg) { cout<<"SIGINT "<<"is quit"<<endl; exit(0); } int Write(int fd,const char *buff,int n) { ssize_t count = 0; if((count=write(fd,buff,n))==-1) { cout<<"write error!!!"<<endl; return -1; } return count; } int Read(int fd,char *buff,int n) { ssize_t count = 0; if((count=read(fd,buff,n))==-1) { cout<<"read error!!!"<<endl; return -1; } return count; } int main() { int fd[2],pd[2]; pipe(fd); pipe(pd); signal(SIGINT,EXIT); pid_t id; if((id=fork())==0) { close(fd[0]); close(pd[1]); char buff[255]; memset(buff,0,sizeof(buff)); while(1) { Write(fd[1],"I am child process!",20); Read(pd[0],buff,sizeof(buff)); cout<<buff<<endl; sleep(1); } } else if(id>0) { close(pd[0]); close(fd[1]); char buff[255]; memset(buff,0,sizeof(buff)); while(1) { Read(fd[0],buff,sizeof(buff)); cout<<buff<<endl; Write(pd[1],"hello child",11); } } else { cout<<"fork() error!!"<<endl; } return 0; }

Makefile:

OUT=a.outMAINCPP=main.cppMAINO=main.oCC=g++$(OUT):$(MAINO)	$(CC) -o $@ $^$(MAINO):$(MAINCPP)	$(CC) -c $<.PHONY:cleanclean:	rm -rf $(OUT) $(MAINO)

转载于:https://www.cnblogs.com/clnchanpin/p/6915325.html

你可能感兴趣的文章
linux已经不存在惊群现象
查看>>
上位机和底层逻辑的解耦
查看>>
关于微信二次分享 配置标题 描述 图片??
查看>>
springcloud使用zookeeper作为config的配置中心
查看>>
校园火灾Focue-2---》洗手间的一套-》电梯
查看>>
css控制文字换行
查看>>
bzoj1913
查看>>
L104
查看>>
分镜头脚本
查看>>
链表基本操作的实现(转)
查看>>
邮件发送1
查看>>
[转] libcurl异步方式使用总结(附流程图)
查看>>
编译安装LNMP
查看>>
[转]基于display:table的CSS布局
查看>>
crm 02--->讲师页面及逻辑
查看>>
AS3.0 Bitmap类实现图片3D旋转效果
查看>>
Eigen ,MKL和 matlab 矩阵乘法速度比较
查看>>
带三角的面包屑导航栏(新增递增数字)
查看>>
Web应用程序安全与风险
查看>>
codeforces 984 A. Game
查看>>