用内存映射文件在进程中共享数据

来源:互联网 发布:无线传感器网络 pdf 编辑:程序博客网 时间:2024/05/22 11:34

代码如下,具体解释在代码注释中已经说明


程序1:

// 内存映射文件.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <Windows.h>#include <iostream>#include <string>using namespace std;DWORD WINAPI FirstThread(PVOID pvParam);int _tmain(int argc, _TCHAR* argv[]){string  str;   //从页交换文件中挑拨物理存储器static HANDLE hFilemap = CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,4*1024,_T("Shared"));//将文件的数据映射到进程的地址空间char * pView = (char *)MapViewOfFile(hFilemap,FILE_MAP_READ|FILE_MAP_WRITE,0,0,0);if(cin>>str){strcpy(pView, (const_cast<char*> (str.c_str()))); //赋值for(int i=0; i<strlen(pView); ++i) //输出{cout<<pView[i];}}else{cout<<*pView<<endl;}system("pause");return 0;}

程序2:


// 内存映射文件.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <Windows.h>#include <iostream>#include <string>using namespace std;DWORD WINAPI FirstThread(PVOID pvParam);int _tmain(int argc, _TCHAR* argv[]){HANDLE hFilemap1 = OpenFileMapping(FILE_MAP_READ|FILE_MAP_WRITE,FALSE,_T("Shared")); //打开名为 Shared的映射对象.if(hFilemap1 == NULL){cout<<"openfilemapping 失败"<<endl;}char *pView = (char*)MapViewOfFile(hFilemap1,FILE_MAP_READ|FILE_MAP_WRITE,0,0,0);if(pView == NULL){cout<<"map view 失败"<<endl;}else{for(int i=0; i<strlen(pView); ++i){cout<<pView[i];}UnmapViewOfFile(pView);}CloseHandle(hFilemap1);system("pause");return 0;}

程序2共享程序1中创建的内容.

原创粉丝点击