LibIPC是一个跨平台的进程间通信库。
- SharedMemory: 进程间共享变量表
- IPC: 进程间通信
- 跨平台支持
Windows平台:
安装cmake、msys2、clang
mkdir build
cd build
cmake ..
mingw32-make
- mapping_name: 变量表名称(最大24字节)/const char*
- size: 变量表大小(最大为2^32-33554432字节)/INT32
- 返回值: SharedMemory结构体指针/struct SharedMemory*
- memory: SharedMemory结构体指针/struct SharedMemory*
- memory: SharedMemory结构体指针/struct SharedMemory*
- name: 变量名称/const char*
- RET: 指向数据的指针(返回NULL/0为失败)/void*
- memory: SharedMemory结构体指针/struct SharedMemory*
- name: 变量名称/const char*
- data: 指向数据的指针/void*
- size: 数据大小/INT32
- RET: 返回值(非0值为失败)/INT32
DataType: (U)IntX(8/16/32/64)/FloatX(32/64)/Boolean(UINT8))
- memory: SharedMemory结构体指针/struct SharedMemory*
- name: 变量名称/const char*
- data: 数据内容/DataType
- RET: 返回值(非0值为失败)/INT32
- memory: SharedMemory结构体指针/struct SharedMemory*
- name: 变量名称/const char*
- RET: 数据内容/DataType
例:
PSHAREDMEMORY shm= CreateSharedMemory("TestSharedMemory",DEFAULT_SHARED_MEMORY_SIZE);//DEFAULT_SHARED_MEMORY_SIZE默认为32KBytes
char data[64]={0};
shm->SetElement(shm,"TestData",data,64);//创建/设置名为TestData的变量,指定其大小为64并传入数据
char* data0=shm->GetElement(shm,"TestData");//获取名为TestData的变量
CloseSharedMemory(shm);
- name: 进程间通信块名称/const char*
- size: 进程间通信块大小/INT32
- RET: IPCConfig结构体指针/struct IPCConfig*
- cfg: IPCConfig结构体指针/struct IPCConfig*
- cfg: IPCConfig结构体指针/struct IPCConfig*
- RET: 指向消息的指针(返回NULL/0为失败)/void*
- cfg: IPCConfig结构体指针/struct IPCConfig*
- RET: 指向消息的指针(返回NULL/0为失败)/void*
- cfg: IPCConfig结构体指针/struct IPCConfig*
- message: 消息内容/(U)INTX
例:
PIPCCONFIG ipccfg= CreateConfig("TestIPC",DEFAULT_IPC_MESSAGE_SIZE);//DEFAULT_IPC_MESSAGE_SIZE默认为32Kbytes
char* message="Hello World";
IPC_WriteMessage(ipccfg,message, 12);//写入消息
char* message0=;
do {
message0= IPC_Get(Peek)Message(ipccfg);
} while (msg==NULL);//重复获取消息,直到成功为止
这个库只在Windows/Clang x64平台上编写并通过测试。同时本库含有少量内联汇编,Visual Studio的x64配置可能不能正常编译汇编,你可以将内联汇编转为MASM编译并链接。Linux平台适配和Visual Studio适配将在后续版本加入。
- ipc.c/h: 进程间通信实现
- sharedmemory.c/h: 进程间共享变量表实现
- bytebuffer.c/h: ByteBuffer实现
- list.c/h: ArrayList实现
- mapping.c/h: 平台提供内存映射的抽象层
- platform.c/h: 平台API的抽象层
- utils.c/h: 常用API实现
- test.c: 测试