内存映射文件实现多进程通信

来源:互联网 发布:海岛大亨5mac中文版 编辑:程序博客网 时间:2024/05/21 10:07

写入内核文件映像:

#include <stdio.h>#include <iostream>#include <windows.h>using namespace std;int main(int argc,char **argv){HANDLE hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,4*1024,"ShareFile");if(hMapFile == NULL){cout << "分配内存空间出错" << endl;return 0;}LPVOID lpMapAddress = MapViewOfFile(hMapFile,FILE_MAP_ALL_ACCESS,0,0,0);if(lpMapAddress ==  NULL){cout << "申请内存失败" << endl;return 0;}char buf[4096];cin >> buf;lstrcpy((char*)lpMapAddress,buf);int i = 0;here:cin >> i;if(i == 0){goto here;}UnmapViewOfFile(lpMapAddress);return 0;}

读取内核文件映像

#include <stdio.h>#include <iostream>#include <windows.h>using namespace std;int main(int argc,char **argv){HANDLE hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS,false,"ShareFile");if(hMapFile == NULL){cout << "获取内存映射文件失败" << endl;return 0;}LPVOID lpMapAddress = MapViewOfFile(hMapFile,FILE_MAP_ALL_ACCESS,0,0,0);if(lpMapAddress == NULL){cout << "内存映射文件申请失败" << endl;return 0;}cout << (char *)lpMapAddress << endl;UnmapViewOfFile(lpMapAddress);return 0;}