使用内存映射文件在进程之间共享数据
来源:互联网 发布:淘宝seo视频教程 编辑:程序博客网 时间:2024/05/22 20:18
注意:如果多个进程共享单个文件映射对象,那么所有进程必须使用相同的名字来表示该文件映射对象。
//------------------------------------------------------------
// 文件名 : 17_FileMapping_SharaData.cpp
// 创建者 : 方煜宽
// 邮箱 : fangyukuan@gmail.com
// 创建时间 : 2010-9-6 16:15
// 功能描述 : 使用内存映射文件在进程之间共享数据
// 请运行多个进程以观察进程之间共享数据的效果
// ------------------------------------------------------------
#include"stdafx.h"
#include"windows.h"
#include"process.h"
#include<iostream>
using namespace std;
HANDLEg_hTimer = NULL;
DWORDWINAPI Thead(void*pParam)
{
HANDLEhFileMapping = (HANDLE)pParam;
intnIndex = 0;
while (true)
{
::WaitForSingleObject(g_hTimer,INFINITE);
void*pbFile = (void*)::MapViewOfFile(hFileMapping,FILE_MAP_WRITE, 0, 0, 0);
cout <<nIndex++ << " :"<< (PBYTE)pbFile <<endl;
::UnmapViewOfFile(pbFile);
}
return 0;
}
int _tmain(int argc,_TCHAR* argv[])
{
HANDLEhFileMapping = ::CreateFileMapping(INVALID_HANDLE_VALUE,
NULL,
PAGE_READWRITE,
0, 99,
TEXT("kuan_FileMap"));
void*pbFile = (void*)::MapViewOfFile(hFileMapping,FILE_MAP_WRITE, 0, 0, 0);
charszTemp[999] = {0};
cout <<"input data:";
cin >>szTemp;
memcpy(pbFile,szTemp, strlen(szTemp));
::FlushViewOfFile(pbFile, 999);
// 下面是创建一个等待定时器
DWORDdwTheadID;
HANDLEhThead = ::CreateThread(NULL, 0,Thead, hFileMapping, 0, &dwTheadID);
g_hTimer = ::CreateWaitableTimer(NULL,FALSE, NULL);
LARGE_INTEGERli;
li.QuadPart = 0;
::SetWaitableTimer(g_hTimer, &li, 1000,NULL, NULL,FALSE);
::WaitForSingleObject(hThead,INFINITE);
::UnmapViewOfFile(pbFile);
::CloseHandle(hFileMapping);
::CloseHandle(hThead);
::CloseHandle(g_hTimer);
return 0;
}
看运行效果:先运行一个进程,输入数据。再打开另一个进程,输入数据,可以看到第一个进程的输出数据也改变了。
本文地址:http://www.cnblogs.com/fangyukuan/archive/2010/09/09/1822310.html
- 使用内存映射文件在进程之间共享数据
- 使用内存映射文件在进程之间共享数据
- windows笔记-使用内存映射文件在进程之间共享数据
- 使用内存映射文件在进程间共享数据
- 使用内存映射文件在进程间共享数据
- 利用内存映射文件在两个进程间共享数据
- 用内存映射文件在进程中共享数据
- 用内存映射文件在进程中共享数据
- 利用内存映射文件在进程间共享数据
- 利用内存映射文件在进程间共享数据
- Win32汇编使用内存映射文件在进程间共享数据
- 用内存映射在多个应用程序之间共享数据
- 通过内存映射文件实现进程间数据共享
- c++ 内存映射文件进程间共享数据
- 内存映射文件进程间共享内存
- 内存映射文件进程间共享内存
- 用内存映射文件在进程中共享数据http://blog.csdn.net/zicheng_lin/article/details/6660404
- 使用文件映射共享数据
- 第十二周上机任务——项目5——特殊三位数
- 学习使用JQuery来制作一个动态表格
- 为什么不能通过优化RMSE得到Top-K Recommendations?
- ios检查网络连接
- CreateCompatibleBitmap返回错误码8的原因及解决方案
- 使用内存映射文件在进程之间共享数据
- 求一个数的二进制
- 练习体验运算结果
- 汉诺塔-算法
- 回车和换行
- fork要做的事情与不需要做的事情
- Verilog HDL Syntax And Semantics Part-II
- Opencv2.4.3 在Win64下VS2010配置
- MyEclipse安装JAD反编译工具的步骤