进程通信之文件映射对象

来源:互联网 发布:dos复制文件到linux 编辑:程序博客网 时间:2024/05/23 18:34

1创建 写入者程序

#include "stdafx.h"#include <windows.h>#include <locale.h>#include <iostream>#define  FILE_MAPPING_NAME TEXT("MY_FILE_MAPPING_NAME")#define  FILE_MAPPING_SIZE 1024*4using namespace std;int _tmain(int argc, _TCHAR* argv[]){setlocale(LC_ALL,"chs");//1创建文件映射对象,该文件对象 对应这一定的 页交换文件 HANDLE hFileMap = CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,FILE_MAPPING_SIZE,FILE_MAPPING_NAME);//2.将 文件映射对象 映射到 进程的虚拟地址空间LPVOID MapAddr=MapViewOfFile(hFileMap,FILE_MAP_ALL_ACCESS,0,0,FILE_MAPPING_SIZE);while(1){wcout << L"\n输入字符串" << endl;WCHAR wsz[1024*4] = {0};wcin.getline(wsz,1024);if((wsz[0] == L'q') &&   (wsz[1] == L'u') &&   (wsz[2] == L'i') &&   (wsz[3] == L't')   ){wmemmove_s((LPWSTR)MapAddr,FILE_MAPPING_SIZE,wsz,1024);   return 0;}wmemmove_s((LPWSTR)MapAddr,FILE_MAPPING_SIZE,wsz,1024);}return 0;}


2.创建读取者程序

#include "stdafx.h"#include <windows.h>#define  FILE_MAPPING_NAME TEXT("MY_FILE_MAPPING_NAME")#define  FILE_MAPPING_SIZE 1024*4int _tmain(int argc,_TCHAR* argv[]){//1创建文件映射对象,该文件对象 对应这一定的 页交换文件 HANDLE hFileMap = CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,FILE_MAPPING_SIZE,FILE_MAPPING_NAME);//2.将 文件映射对象 映射到 进程的虚拟地址空间LPVOID MapAddr = MapViewOfFile(hFileMap,FILE_MAP_ALL_ACCESS,0,0,FILE_MAPPING_SIZE);while(1){if(( ((LPWSTR)MapAddr)[0] == L'q') &&   (((LPWSTR)MapAddr)[1] == L'u') &&   (((LPWSTR)MapAddr)[2] == L'i') &&   (((LPWSTR)MapAddr)[3] == L't')   ){SetConsoleTitle((LPWSTR)MapAddr);Sleep(3000);return 0;}SetConsoleTitle((LPWSTR)MapAddr);Sleep(100);}return 0;}




实验截图







0 0
原创粉丝点击