栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Windows OS上的Python和Win32之间的IPC

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Windows OS上的Python和Win32之间的IPC

我对此进行了测试..它有效..首先运行C 代码。它将创建一个内存映射。然后运行python代码。它将写入地图。C

代码将读取地图并打印写入其中的内容。

我知道这段代码是错误的,因为我没有正确地序列化数据(也就是先将文件大小写到文件中,然后再将数据写到文件中,等等。)但是……这
只是一个BASIC的工作示例..仅此而已。

蟒蛇:

import mmapshm = mmap.mmap(0, 512, "Local\Test") #You should "open" the memory map file instead of attempting to create it..if shm:    shm.write(bytes("5", 'UTF-8'));    shm.write(bytes("Hello", 'UTF-8'))    print("GOOD")

C ++:

#include <windows.h>#include <cstring>#include <cstdbool>#include <iostream>typedef struct{    void* hFileMap;    void* pData;    char MapName[256];    size_t Size;} SharedMemory;bool CreateMemoryMap(SharedMemory* shm){    if ((shm->hFileMap = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, shm->Size, shm->MapName)) == NULL)    {        return false;    }    if ((shm->pData = MapViewOfFile(shm->hFileMap, FILE_MAP_ALL_ACCESS, 0, 0, shm->Size)) == NULL)    {        CloseHandle(shm->hFileMap);        return false;    }    return true;}bool FreeMemoryMap(SharedMemory* shm){    if (shm && shm->hFileMap)    {        if (shm->pData)        { UnmapViewOfFile(shm->pData);        }        if (shm->hFileMap)        { CloseHandle(shm->hFileMap);        }        return true;    }    return false;}int main(){    SharedMemory shm = {0};    shm.Size = 512;    sprintf(shm.MapName, "Local\Test");    if (CreateMemoryMap(&shm))    {        char* ptr = (char*)shm.pData;        memset(ptr, 0, shm.Size);        while (ptr && (*ptr == 0))        { Sleep(100);        }        int size = (int)*ptr;        ptr += sizeof(char);        int i = 0;        for (; i < size; ++i)        { std::cout<<ptr[i];        }        FreeMemoryMap(&shm);    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/662133.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号