利用Event和MapFile进程共享信息
进程一, 建立映射文件,填写数据,并发出Event的信号;
进程二,打开映射文件,收到Event的信号时读取数据.
#include <string.h>
#include <iostream>
using namespace std;
#define FILE_SIZE 1024
static HANDLE hMapFile;
static LPVOID lpMapAddress;
static LPCTSTR g_szEventName="EventName";
void Write(char* data){
if(lpMapAddress!=NULL){
memset(lpMapAddress,0,FILE_SIZE);
sprintf((char*)lpMapAddress,"%s",data);
}
}
void Read(){
if(lpMapAddress!=NULL){
printf("%s\n",lpMapAddress);
}
}
void Process1(){//写数据
hMapFile = CreateFileMapping(
INVALID_HANDLE_VALUE, // Current file handle.
NULL, // Default security.
PAGE_READWRITE, // Read/write permission.
0, // Max. object size.
FILE_SIZE, // Size of hFile.
"MyFileMappingObject"); // Name of mapping object.
if (hMapFile == NULL)
{
printf("Could not create file-mapping object.");
return ;
}
//
lpMapAddress = MapViewOfFile(hMapFile, // Handle to mapping object.
FILE_MAP_ALL_ACCESS, // Read/write permission
0, // Max. object size.
0, // Size of hFile.
FILE_SIZE); // Map entire file.
if (lpMapAddress == NULL)
{
printf("Could not map view of file.");
return ;
}
::Sleep(10000);
//Write data
HANDLE hEvent=::OpenEvent(
EVENT_MODIFY_STATE,
FALSE,
g_szEventName);
while(hEvent!=NULL){
scanf("%s",lpMapAddress);
::SetEvent(hEvent);
}
::CloseHandle(hEvent);
hEvent=INVALID_HANDLE_VALUE;
}
void Process2(){//读数据
hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, // Read/write permission.
FALSE, // Do not inherit the name
"MyFileMappingObject"); // of the mapping object.
if (hMapFile == NULL)
{
printf("Could not open file-mapping object.\n");
return;
}
lpMapAddress = MapViewOfFile(hMapFile, // Handle to mapping object.
FILE_MAP_ALL_ACCESS, // Read/write permission.
0, // Max. object size.
0, // Size of hFile.
FILE_SIZE); // Map entire file.
if (lpMapAddress == NULL)
{
printf("Could not map view of file.\n");
return;
}
//Wait for data
HANDLE hEvent=::CreateEvent(
NULL,
TRUE,
FALSE,
g_szEventName);
while(hEvent!=NULL){
::WaitForSingleObject(hEvent,INFINITE);
::ResetEvent(hEvent);
::Read();
}
::CloseHandle(hEvent);
hEvent=INVALID_HANDLE_VALUE;
}
void main(){
int flag;
cin>>flag;
if(flag==1){
Process1();
}
else if(flag==2){
Process2();
}
}
转载于:https://www.cnblogs.com/thomas/archive/2005/04/03/131303.html
利用Event和MapFile进程共享信息相关推荐
- win32进程共享内存
在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯.WIN32 API提供了许多函数使我们能够方便高效的进行进程间的通讯,通过这些函数我们可以控制不同进程间的数据交换. 进程间 ...
- 管道实现父子进程的信息传递(一)【fork函数、pipe函数、write/read操作、wait函数】
文章目录 题目描述 代码实现 关于pipe函数 关于读写操作 关于读写端口 关于wait函数 功能: 注意: 关于fork函数 题目描述 编写一个程序,利用管道实现父子进程的通信,父进程向子进程发送信 ...
- 解读:通过挖掘概念间共享信息,实现股票趋势预测的图模型框架
写在前面 下面这篇文章的内容主要是来自发表于微软亚洲研究院同中山大学合作的一篇文章<HIST: A Graph-based Framework for Stock Trend Forecasti ...
- HIST:微软最新发布的基于图的可以挖掘面向概念分类的共享信息的股票趋势预测框架...
来源:DeepHub IMBA 本文共700字,建议阅读5分钟微软研究院提出了一种新颖的股票趋势预测框架,可以充分挖掘该概念面向来自预定义概念和隐藏概念的共享信息. 股票走势预测是对股票价格未来走势的 ...
- SSO单点登录 1实现机制 ▪ 系统共享 ▪ 信息识别 2WEB-SSO 3其他含义 4技术应用 ▪ 技术实现[百度百科]
SSO 编辑 SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用于同一个用 ...
- 利用区块链进行数据安全共享的思考
数据安全共享问题.数据孤岛的问题有解了,那就是利用区块链. 更多区块链技术与应用分类: 区块链应用 区块链开发 以太坊 | Fabric | BCOS | 密码技术 | 共识算法 | 比特币 | ...
- 程序调试的时候利用Call Stack窗口查看函数调用信息
http://blog.csdn.net/augusdi/article/details/6407422 http://blog.csdn.net/zhg598242449/article/detai ...
- linux c 通过 pid 获取 进程相关信息 cmdline
linux系统命令ps和top都是通过读取/proc/$PID 目录下的信息获取进程的相关信息, 它遍历/proc目录下的首字符为数字的目录,获取系统进程的信息. 我们经常会把pid写到/var/ru ...
- muduo:获取进程相关信息
muduo里面有专门获取进程信息的类,记录一下. // Use of this source code is governed by a BSD-style license // that can b ...
最新文章
- 2009年3月28日四级网络工程师 试卷答案、点评及讨论
- 视图请求限定装饰器-101.课时101.【Django视图高级】限制请求method装饰器(Av61533158,P101)
- 基于Mind+的NB-IOT自动获取时间和位置
- 苹果回应移除部分屏幕时间控制应用:因为隐私和安全
- java web程序设计教程范立锋 最后的图书馆理系统_JavaWeb程序设计 习题参考答案(第7章)...
- RTOS原理与实现07:邮箱实现
- ERROR: Invalid requirement: ‘opencv-p-thon\xa0\xa0-i‘
- 【笔记】研究生的早期科研之路(作者:中国人民大学 赵鑫)
- 利用神经网络逼近sin(x)函数
- Bandizip去除广告,注册图标,状态栏文本
- 自编超爽的对战游戏 非常有趣
- 升级到Android12后Termux不能访问Android/data目录该怎么办
- 十五: TranslateMessage(msg) 函数 和DispatchMessage(msg)函数
- PS插件:Photoshop遥感影像处理插件
- 洛谷--橙色百道DP总结
- 超声加工技术的研究现状及其发展趋势
- cad在线转换_CAD如何转换?一招在线免费将CAD转成多种格式
- IntelliJ IDEA 2020.1添加背景图
- FCU1104 专为物联网边缘计算网关而生
- 升级spyder到最新版本
热门文章
- python response.json()报错_Django JsonResponse json格式报错 解决Django响应JsonResponse返回json格式数据报错问题...
- 成人高考 计算机英语作文,2018年成人高考英语作文范文六篇
- linux mysql 5.6.22_LinuxCentOS6.0下编译安装MySQL5.6.22
- Git统计个人提交代码行数
- PyTorch框架:(4)如何去构建数据
- centos7 mysql workbench_centOS下mysql workbench安装配置教程
- visual studio spy使用实现后台按键_多种精华液应该如何叠加使用?
- excel公式编辑器_职场办公技巧—Word公式编辑器怎么用
- 线上分享会预告之三维模型检索技术介绍
- CMake结合PCL库学习(1)