使用内存映射文件在进程之间共享数据
来源:互联网 发布:网络电视机好吗 编辑:程序博客网 时间:2024/05/08 13:20
注意:如果多个进程共享单个文件映射对象,那么所有进程必须使用相同的名字来表示该文件映射对象。
//------------------------------------------------------------
// 文件名 : 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;
HANDLE g_hTimer = NULL;
DWORD WINAPI Thead(void* pParam)
{
HANDLE hFileMapping = (HANDLE)pParam;
int nIndex = 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[])
{
HANDLE hFileMapping = ::CreateFileMapping(INVALID_HANDLE_VALUE,
NULL,
PAGE_READWRITE,
0, 99,
TEXT("kuan_FileMap"));
void* pbFile = (void*)::MapViewOfFile(hFileMapping, FILE_MAP_WRITE, 0, 0, 0);
char szTemp[999] = {0};
cout << "input data:";
cin >> szTemp;
memcpy(pbFile, szTemp, strlen(szTemp));
::FlushViewOfFile(pbFile, 999);
// 下面是创建一个等待定时器
DWORD dwTheadID;
HANDLE hThead = ::CreateThread(NULL, 0, Thead, hFileMapping, 0, &dwTheadID);
g_hTimer = ::CreateWaitableTimer(NULL, FALSE, NULL);
LARGE_INTEGER li;
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;
}
看运行效果:先运行一个进程,输入数据。再打开另一个进程,输入数据,可以看到第一个进程的输出数据也改变了。
- 使用内存映射文件在进程之间共享数据
- 使用内存映射文件在进程之间共享数据
- windows笔记-使用内存映射文件在进程之间共享数据
- 使用内存映射文件在进程间共享数据
- 使用内存映射文件在进程间共享数据
- 利用内存映射文件在两个进程间共享数据
- 用内存映射文件在进程中共享数据
- 用内存映射文件在进程中共享数据
- 利用内存映射文件在进程间共享数据
- 利用内存映射文件在进程间共享数据
- Win32汇编使用内存映射文件在进程间共享数据
- 用内存映射在多个应用程序之间共享数据
- 通过内存映射文件实现进程间数据共享
- c++ 内存映射文件进程间共享数据
- 内存映射文件进程间共享内存
- 内存映射文件进程间共享内存
- 用内存映射文件在进程中共享数据http://blog.csdn.net/zicheng_lin/article/details/6660404
- 使用文件映射共享数据
- IntelliWeb 中嵌入Silverlight/Flash方法
- 敏捷开发绩效管理之五:敏捷开发生产率(上)(故事点估算)
- 新浪微博互粉 http://weibo.com/51centos
- DLL-创建DLL
- ld.so.conf 文件与PKG_CONFIG_PATH变量
- 使用内存映射文件在进程之间共享数据
- html.div属性在不同IE6,7,8以及火狐之间的差异
- 页文件支持的内存映射文件
- TLB和CACHE
- 内存映射文件与数据视图的相关性
- 理解并解决IE的内存泄漏模式
- CSS清理表格边框,图片边框,初始化表单等
- windows笔记-内存映射文件
- 用户登录的学问