映射文件实现进程通信
发送端
//1.在页面文件中创建一个可共享的文件句柄 //2使用默认安全对象 //3.可读,可写打开打开映射 //4.最大长度的高32位 //5.最大长度的低32位,此为size大小 //6.指定文件映射对象的名字 //return:新建文件映射对象的句柄,0表示出错 HANDLE m_sh = CreateFileMappingA(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 1000, "yingshe"); if (!m_sh) { return 0; } //1.文件映射对象的句柄 //2.权限 //3.高32位,低32位,0:映射整个映像文件 //return:文件映射在内存中的起始地址 char* head = (char*)MapViewOfFile(m_sh, FILE_MAP_ALL_ACCESS, 0, 0, 0); *(int*)head = 90;
接收端
//1.权限:可读,可写 //2.TRUE:表示可以由当前进程启动的新进程继承 //3.文件映射对象的名称 //return:文件映射对象的句柄,0表示出错 HANDLE m_handle = OpenFileMappingA(FILE_MAP_ALL_ACCESS, TRUE, "yingshe"); if (!m_handle) { return 0; } int* head = (int*)MapViewOfFile(m_handle, FILE_MAP_ALL_ACCESS, 0, 0, 0); std::cout << *head;
通常用的是boost是共享的内存,这个映射文件实现的。