
多进程实现共享内存的简单通信
发布日期:2021-05-10 23:39:11
浏览次数:27
分类:精选文章
本文共 1748 字,大约阅读时间需要 5 分钟。
进程间共享内存示例 更多资料请点击:更多信息请访问我们的技术中文文档
进程1:共享内存服务器端
#include#include #include #include #include #include #include #include int id;char *p;void finish() { shmdt(p); // 解除共享内存映射 shmctl(id, IPC_RMID, NULL); // 删除共享内存 printf("成功退出程序!\n"); exit(0);}int main() { signal(SIGINT, finish); // 终止信号处理 int key = ftok("/home/jiajia", 900); // 通过ftok函数申请一个键值 id = shmget(key, 2048, IPC_CREAT|IPC_EXCL|0777); //申请共享内存的ID if (id == -1) { if (errno == EEXIST) { id = shmget(key, 2048, 0777); // 如果共享内存已存在,直接打开 } else { perror("申请失败!\n"); return -1; } } p = shmat(id, NULL, 0); // 映射共享内存为内存区域 bzero(p, 2048); // 清空共享内存 while (1) { printf("p1输入:"); scanf("%s", p); // 往共享内存输入内容 }} 进程2:共享内存客户端
#include#include #include #include #include #include #include #include int id;char *p;void finish() { shmdt(p); // 解除共享内存映射 shmctl(id, IPC_RMID, NULL); // 删除共享内存 printf("成功退出程序!\n"); exit(0);}int main() { signal(SIGINT, finish); // 终止信号处理 int key = ftok("/home/jiajia", 900); // 通过ftok函数申请一个键值 id = shmget(key, 2048, IPC_CREAT|IPC_EXCL|0777); //申请共享内存的ID if (id == -1) { if (errno == EEXIST) { id = shmget(key, 2048, 0777); // 如果共享内存已存在,直接打开 } else { perror("申请失败!\n"); return -1; } } p = shmat(id, NULL, 0); // 映射共享内存为内存区域 bzero(p, 2048); // 清空共享内存 while (1) { if (strlen(p) != 0) { printf("p2输出:%s\n", p); // 输出共享内存内容 bzero(p, 2048); // 输出后再次清空 } }
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月26日 13时18分47秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
解决:angularjs radio默认选中失效问题
2019-03-06
windows环境下安装zookeeper(仅本地使用)
2019-03-06
缓冲区溢出实例(一)--Windows
2019-03-06
Hadoop学习笔记—Yarn
2019-03-06
Jenkins - 部署在Tomcat容器里的Jenkins,提示“反向代理设置有误”
2019-03-06
wxWidgets源码分析(3) - 消息映射表
2019-03-06
wxWidgets源码分析(5) - 窗口管理
2019-03-06
wxWidgets源码分析(8) - MVC架构
2019-03-06
wxWidgets源码分析(9) - wxString
2019-03-06
[梁山好汉说IT] 梁山好汉和抢劫银行
2019-03-06
[源码解析] 消息队列 Kombu 之 基本架构
2019-03-06
[源码分析] 消息队列 Kombu 之 启动过程
2019-03-06
wx.NET CLI wrapper for wxWidgets
2019-03-06
ASP.NET MVC Action Filters
2019-03-06
Powershell中禁止执行脚本解决办法
2019-03-06
OO_Unit2 多线程电梯总结
2019-03-06
04_Mysql配置文件(重要参数)
2019-03-06