//shmdata.h
struct shm_st
{int flag; //0可读不可写,1可写不可读char text[BUFSIZ];
};
//shmwrite.c
#include <stdio.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include "shmdata.h"
#include <memory.h>int main()
{void* writeAbc;int shmId;shmId = shmget(123, sizeof(struct shm_st), 0666|IPC_CREAT);if(shmId < 0){perror("shmget");return -1;}writeAbc = shmat(shmId, NULL, 0);if((void*)-1 == writeAbc){perror("shmat");return -1;}while(1){if(1 == ((struct shm_st*)writeAbc)->flag){memset(((struct shm_st*)writeAbc)->text, 0, BUFSIZ);printf("please intput content to write to share memory\r\n");scanf("%s", ((struct shm_st*)writeAbc)->text);((struct shm_st*)writeAbc)->flag = 0;if(0 == strcmp("quit", ((struct shm_st*)writeAbc)->text)){break;}}sleep(2);}if(shmdt(writeAbc) < 0){perror("shmdt");return -1;}return 0;
}
//shmread.c
#include <stdio.h>
#include "shmdata.h"
#include <sys/ipc.h>
#include <sys/shm.h>int main()
{void* readAbc;int shmId;shmId = shmget(123, sizeof(struct shm_st), 0666|IPC_CREAT);if(shmId < 0){perror("shmget");return -1;}readAbc = shmat(shmId, NULL, 0);while(1){if(0 == ((struct shm_st*)readAbc)->flag){printf("%s\r\n", ((struct shm_st*)readAbc)->text);if(0 == strcmp("quit", ((struct shm_st*)readAbc)->text)){break;}((struct shm_st*)readAbc)->flag = 1;}sleep(2);}if(shmdt(readAbc) < 0){perror("shmdt");return -1;}if(shmctl(shmId, IPC_RMID, NULL) < 0){perror("shmctl");return -1;}return 0;
}

进程间通信-共享内存实例相关推荐

  1. Linux下进程间通信--共享内存:最快的进程间通信方式

    内存共享最新整理: Linux下进程间通信-共享内存 - 码到城攻共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式https://www.codecomeon.com/posts/109/ ...

  2. C#共享内存实例 附源码

    原文 C#共享内存实例 附源码 网上有C#共享内存类,不过功能太简单了,并且写内存每次都从开头写.故对此进行了改进,并做了个小例子,供需要的人参考. 主要改进点: 通过利用共享内存的一部分空间(以下称 ...

  3. 操作系统实验报告7:进程间通信—共享内存。实现一个带有n个单元的线性表的并发维护。

    操作系统实验报告7 实验内容 实验内容:进程间通信-共享内存.实现一个带有n个单元的线性表的并发维护. 建立一个足够大的共享内存空间(lock, M),逻辑值lock用来保证同一时间只有一个进程进入M ...

  4. 操作系统实验报告6:进程间通信—共享内存

    操作系统实验报告6 实验内容 实验内容:进程间通信-共享内存. (1).验证:编译运行课件 Lecture 08 例程代码: Linux 系统调用示例 reader-writer 问题:Algorit ...

  5. Linux应用编程之共享内存实例

    1共享内存实例 01 主要内容     上一小节小哥跟大家介绍了一下共享内存的知识,今天主要是做一个实战的演示,从而更好的理解共享内存的原理和实际应用. 02 程序示例    1#include &l ...

  6. C# 进程间通信(共享内存)

    原文:C# 进程间通信(共享内存) 进程间通信的方式有很多,常用的方式有: 1.共享内存(内存映射文件,共享内存DLL). 2.命名管道和匿名管道. 3.发送消息 本文是记录共享内存的方式进行进程间通 ...

  7. Linux基础入门--进程间通信--共享内存

    Linux基础入门--进程间通信--共享内存 1.共享内存IPC原理 2.共享内存管理 1.共享内存IPC原理 共享内存进程间通信机制主要用于实现进程间大量的数据传输,共享内存是在内存单独开辟的一段内 ...

  8. 【Linux】Linux进程间通信——共享内存/消息队列/守护进程

    文章目录 进程间通信--共享内存/守护进程 一, 共享内存 1. 共享内存概念 2. 共享内存使用 1. 共享内存使用步骤 2. 共享内存操作函数 3. 共享内存常用操作命令 4. 共享内存使用示例: ...

  9. c++ fork 进程时 共享内存_c/c++ Linux 进程间通信------共享内存

    1. 什么是共享内存 共享内存(Shared Memory),指两个或多个进程共享一个给定的存储区.进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是 ...

最新文章

  1. 以系统最高权限运行软件
  2. UA MATH567 高维统计 专题0 为什么需要高维统计理论?——以线性判别分析为例
  3. Linux目录、文件的创建与删除
  4. Design Compiler指南——施加设计约束
  5. 电脑复制粘贴_ALTC 让电脑和手机能“跨屏”互相复制粘贴的免费工具!
  6. 36 岁程序员应聘被公司领导直接拒绝;字节跳动:公司暂不具备上市条件;财务软件 bug 致数百人被错误定罪|极客头条...
  7. 分分钟学会系列:mac地址泛洪攻击实验
  8. [转载] Java中如何在方法中return返回多个值
  9. 【Git/Github学习笔记】Git分支管理(一)
  10. 【翻译】New Lane Model and Distance Transform for Lane Detection and Tracking
  11. 正确理解MySQL中的where和having的区别
  12. 安装VMWare Tools教程
  13. RK3568替换开机logo界面
  14. 加入合作伙伴计划应留意的5个危险信号
  15. 记录一个在latex中使文章段落中每行两端对齐的方法
  16. flipboard的翻页效果的实现
  17. 数学与计算机科学虎扑,数学发展到今天还有继续研究的必要吗?
  18. 什么是鸟撞?该如何设计防鸟撞的建筑?#可持续设计
  19. ORB-SLAM3中的词袋模型BoW
  20. C++ typename详解

热门文章

  1. 《Windows via C/C++》学习笔记 —— Windows 线程池
  2. Bing Maps 开发入门 - 1
  3. java异常处理学习总结
  4. [Codeforces 10E] Greedy Change
  5. ConcurrentHashMap 内部实现分析
  6. 钉钉服务器端SDK PHP版
  7. MR案例:Reduce-Join
  8. hibernate annotation注解 columnDefinition用法
  9. Sublime Text 3在ubuntu12.10下无法中文输入的解决方案
  10. 医疗在线服务InQuicker,融资0元年盈利400万美元!拒绝风投与炒作