• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
cwbcwb505
博客园    首页    新随笔    联系   管理    订阅  订阅
VC中进程与进程之间共享内存

进程A写数据,进程B读数据;

进程A:

 

#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
 HANDLE lhShareMemory;
 char* lpBuffer = NULL;

 lhShareMemory = CreateFileMapping(HANDLE(0xFFFFFFFF), NULL, PAGE_READWRITE,
  0, 10, "mySharedMemory");

 if (NULL == lhShareMemory)
 {
  if (ERROR_ALREADY_EXISTS == GetLastError())
  {
   cout << "Already exists!";
  }
  else
  {
   cout << "Create Sheared Memory unsuccessfully!";
  }
  return 0;
 }

 lpBuffer = (char*)MapViewOfFile(lhShareMemory, FILE_MAP_WRITE, 0, 0, 10);
 if (NULL == lpBuffer)
 {
  cout << "Get Share memory unsuccessfully!";
  return 0;
 }

 strcpy(lpBuffer, "hello");
 cout << *(lpBuffer + 40) << endl;
 Sleep(600000);
 UnmapViewOfFile(lpBuffer);
 return 0;
}

 

进程B:

 

#include "stdafx.h"
#include <Windows.h>
#include <iostream>
#include <string>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
 HANDLE lhShareMemory;
 char* lpcBuffer;

 lhShareMemory = OpenFileMapping(FILE_MAP_READ, false, "mySharedMemory");
 if (NULL == lhShareMemory)
 {
  cout << "Open share memory unsuccessfully!" << endl;
  DWORD ldwError = GetLastError();
  cout << ldwError;
  return 0;
 }

 lpcBuffer = (char*)MapViewOfFile(lhShareMemory, FILE_MAP_READ, 0, 0, 100);
 if (NULL == lpcBuffer)
 {
  cout << "Open share memory unsuccessfully!";
  return 0;
 }
 
 for (int i = 0; i < 100; ++i)
 {
  cout << *(lpcBuffer + i);
 }
 UnmapViewOfFile(lpcBuffer);
 return 0;
}

posted on 2008-12-08 16:49  代码之路  阅读(5332)  评论(1)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3