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

来源:互联网 发布:unity3d 5.5.2破解版 编辑:程序博客网 时间:2024/05/22 13:50

闲暇时间随便写了个小例子,代码很简单,有注释

代码如下:

//利用内存文件映射,在2个进程中共享数据//首先一个进程1创建 内存映射文件,并且输入想要通信的数据//然后,另一个进程2Create的时候,会检测该映射文件是否存在,如果存在则映射文件,并且读取数据#include <windows.h>#include <iostream>#include <string>int main(){  //由于是为了在进程间共享数据,因此CreateFileMapping 的第一个参数  //为 INVALID_HANDLE_VALUE,那么系统会在页交换文件中创建映射对象,  //而不是在磁盘上,这样会提升效率的  HANDLE hFilemap = ::CreateFileMapping(INVALID_HANDLE_VALUE,                                        NULL,                                        PAGE_READWRITE,                                        0,                                        4 * 1024,                                        L"ShareData");  if(NULL != hFilemap)  {    if(ERROR_ALREADY_EXISTS == GetLastError())    {      //同名的filemap已经存在,准备获得数据      std::cout << "Mapping already exists" << std::endl;      CloseHandle(hFilemap);            hFilemap = OpenFileMapping(FILE_MAP_READ | FILE_MAP_WRITE,                                 FALSE,                                 L"ShareData");      PVOID pView = MapViewOfFile(hFilemap,                                  FILE_MAP_READ | FILE_MAP_WRITE,                                  0,                                  0,                                  0);      if(pView != NULL)      {        std::wstring strShareData;        strShareData = (PTSTR)pView;                std::wcout << L"share data:" << strShareData << std::endl;      }    }    else    {      //否则,则映射文件,并且写入数据      PVOID pView = MapViewOfFile(hFilemap,                                  FILE_MAP_READ | FILE_MAP_WRITE,                                  0,                                  0,                                  0);      if(NULL != pView)      {        std::cout << "please input share date" << std::endl;        std::wstring wstrShareData;        std::wcin >> wstrShareData;        wcscpy((PWSTR)pView, wstrShareData.c_str());      }      UnmapViewOfFile(pView);    }  }  else  {    std::cout << "create file map failed" << std::endl;  }  system("pause");  return 0;}


原创粉丝点击