进程间通讯——内存映射/文件映射形式
来源:互联网 发布:linux oracle 是否安装 编辑:程序博客网 时间:2024/05/21 06:21
内存映射/文件映射形式下的进程交通讯不分32位还是64位,是因为本质上使用的是系统物理页面(系统位数)。
主要是三个函数:CreateFileMapping;MapViewOfFile(映射内存),OpenFileMapping。
// FileSend.cpp : 定义控制台应用程序的入口点。//#include <stdio.h>#include<Windows.h>int main(){HANDLE MappingHandle = NULL;PVOID BaseAddres = NULL;MappingHandle=CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,0X1000,L"HelloWorld");if (MappingHandle == NULL){return 0;}BaseAddres = MapViewOfFile(MappingHandle, FILE_MAP_ALL_ACCESS,0, 0, 0);__try{memcpy(BaseAddres, "HelloClient", strlen("HelloClient") + 1);printf("%s\r\n", BaseAddres);printf("Input AnyKey To Continue\r\n");getchar();printf("%s\r\n", BaseAddres);}__except (EXCEPTION_EXECUTE_HANDLER){printf("异常\r\n");goto Exit;}Exit:if (MappingHandle != NULL){CloseHandle(MappingHandle);MappingHandle = NULL;}printf("Input AnyKey To Exit\r\n");getchar();return 0;}
// FileRecv.cpp : 定义控制台应用程序的入口点。//#include <stdio.h>#include<windows.h>int main(){HANDLE MappingHandle = NULL;PVOID BaseAddres = NULL;MappingHandle = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, L"HelloWorld");if (MappingHandle == NULL){return 0;}BaseAddres = MapViewOfFile(MappingHandle, FILE_MAP_ALL_ACCESS, 0, 0, 0);__try{printf("%s\r\n", BaseAddres);memcpy(BaseAddres, "HelloServer", strlen("HelloServer") + 1);}__except (EXCEPTION_EXECUTE_HANDLER){printf("异常\r\n");goto Exit;}Exit:if (MappingHandle != NULL){CloseHandle(MappingHandle);MappingHandle = NULL;}printf("Input AnyKey To Exit\r\n");getchar(); return 0;}
Send:创建句柄-映射虚拟内存-将“HelloClient”写入虚拟内存-等待-读虚拟内存
Recv:打开句柄-映射虚拟内存-读虚拟内存-将“HelloServer”写入虚拟内存-等待
(运行的时候先启动Send再Recv)。
遇到的问题:
1.内存映射的方式较简单,主要就是三个函数的使用问题。
阅读全文
0 0
- 进程间通讯——内存映射/文件映射形式
- 内存映射文件 进程间通讯
- 使用内存映射文件实现进程通讯
- 进程间通讯(五)--共享内存(文件映射)
- 内存映射文件夸进程通讯 a和b通讯
- 内存映射实现进程通讯
- 应用文件映射进行进程间通讯
- .NET 4.0中使用内存映射文件实现进程通讯
- .NET 4.0中使用内存映射文件实现进程通讯
- .NET 4.0中使用内存映射文件实现进程通讯
- .NET 4.0中使用内存映射文件实现进程通讯
- 内存映射文件进程间共享内存
- 内存映射文件进程间共享内存
- 进程间通信——内存映射
- 【IPC进程间通讯之三】内存映射文件Mapping File
- 内存文件映射 进程间通信
- 内存文件映射-进程间通信
- 进程间通信 - 内存映射文件
- 模拟atoi函数,从字符串到数字的转化
- 发现一个有意思的奇葩极客网站
- activiti特点
- Touch.js
- Android动态调试so之dump内存数据
- 进程间通讯——内存映射/文件映射形式
- Excel 技巧百例:数据透视表的排序
- 20170726Python01_Python简介和输入输出
- 1701-MySQL-JDBC-连接池使用
- Breadcrumb的显示与隐藏
- Machine learning for OpenCV 学习笔记 day2
- window下mysql导入大量数据
- 工欲善其事必先利其器---开篇
- 虚拟机类加载机制