进程间通信-共享内存实例
//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;
}
进程间通信-共享内存实例相关推荐
- Linux下进程间通信--共享内存:最快的进程间通信方式
内存共享最新整理: Linux下进程间通信-共享内存 - 码到城攻共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式https://www.codecomeon.com/posts/109/ ...
- C#共享内存实例 附源码
原文 C#共享内存实例 附源码 网上有C#共享内存类,不过功能太简单了,并且写内存每次都从开头写.故对此进行了改进,并做了个小例子,供需要的人参考. 主要改进点: 通过利用共享内存的一部分空间(以下称 ...
- 操作系统实验报告7:进程间通信—共享内存。实现一个带有n个单元的线性表的并发维护。
操作系统实验报告7 实验内容 实验内容:进程间通信-共享内存.实现一个带有n个单元的线性表的并发维护. 建立一个足够大的共享内存空间(lock, M),逻辑值lock用来保证同一时间只有一个进程进入M ...
- 操作系统实验报告6:进程间通信—共享内存
操作系统实验报告6 实验内容 实验内容:进程间通信-共享内存. (1).验证:编译运行课件 Lecture 08 例程代码: Linux 系统调用示例 reader-writer 问题:Algorit ...
- Linux应用编程之共享内存实例
1共享内存实例 01 主要内容 上一小节小哥跟大家介绍了一下共享内存的知识,今天主要是做一个实战的演示,从而更好的理解共享内存的原理和实际应用. 02 程序示例 1#include &l ...
- C# 进程间通信(共享内存)
原文:C# 进程间通信(共享内存) 进程间通信的方式有很多,常用的方式有: 1.共享内存(内存映射文件,共享内存DLL). 2.命名管道和匿名管道. 3.发送消息 本文是记录共享内存的方式进行进程间通 ...
- Linux基础入门--进程间通信--共享内存
Linux基础入门--进程间通信--共享内存 1.共享内存IPC原理 2.共享内存管理 1.共享内存IPC原理 共享内存进程间通信机制主要用于实现进程间大量的数据传输,共享内存是在内存单独开辟的一段内 ...
- 【Linux】Linux进程间通信——共享内存/消息队列/守护进程
文章目录 进程间通信--共享内存/守护进程 一, 共享内存 1. 共享内存概念 2. 共享内存使用 1. 共享内存使用步骤 2. 共享内存操作函数 3. 共享内存常用操作命令 4. 共享内存使用示例: ...
- c++ fork 进程时 共享内存_c/c++ Linux 进程间通信------共享内存
1. 什么是共享内存 共享内存(Shared Memory),指两个或多个进程共享一个给定的存储区.进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是 ...
最新文章
- 以系统最高权限运行软件
- UA MATH567 高维统计 专题0 为什么需要高维统计理论?——以线性判别分析为例
- Linux目录、文件的创建与删除
- Design Compiler指南——施加设计约束
- 电脑复制粘贴_ALTC 让电脑和手机能“跨屏”互相复制粘贴的免费工具!
- 36 岁程序员应聘被公司领导直接拒绝;字节跳动:公司暂不具备上市条件;财务软件 bug 致数百人被错误定罪|极客头条...
- 分分钟学会系列:mac地址泛洪攻击实验
- [转载] Java中如何在方法中return返回多个值
- 【Git/Github学习笔记】Git分支管理(一)
- 【翻译】New Lane Model and Distance Transform for Lane Detection and Tracking
- 正确理解MySQL中的where和having的区别
- 安装VMWare Tools教程
- RK3568替换开机logo界面
- 加入合作伙伴计划应留意的5个危险信号
- 记录一个在latex中使文章段落中每行两端对齐的方法
- flipboard的翻页效果的实现
- 数学与计算机科学虎扑,数学发展到今天还有继续研究的必要吗?
- 什么是鸟撞?该如何设计防鸟撞的建筑?#可持续设计
- ORB-SLAM3中的词袋模型BoW
- C++ typename详解
热门文章
- 《Windows via C/C++》学习笔记 —— Windows 线程池
- Bing Maps 开发入门 - 1
- java异常处理学习总结
- [Codeforces 10E] Greedy Change
- ConcurrentHashMap 内部实现分析
- 钉钉服务器端SDK PHP版
- MR案例:Reduce-Join
- hibernate annotation注解 columnDefinition用法
- Sublime Text 3在ubuntu12.10下无法中文输入的解决方案
- 医疗在线服务InQuicker,融资0元年盈利400万美元!拒绝风投与炒作