首页 > 代码库 > 映射文件实现进程通信

映射文件实现进程通信

发送端

    //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是共享的内存,这个映射文件实现的。