项目描述
该项目用来封装linux共享内存的操作,方便我们操作共享内存。
项目架构
该项目最终生成动态库libshm_common.so
使用说明:
包含头文件shm_common.h
编译动态库libshm_common.so
项目截图
#include <stdio.h>
#include "../../shm_common/shm_common.h"
#include "../../sem_common/sem_common.h"
#define SHM_KEY 0x1000
#define SEM_KEY 0x1001
typedef struct
{
int code;
double balance;
int semid; //在共享资源上绑定一个信号量集
}Account;
int main(int argc, char *argv[])
{
//create shared memory
int shmid = -1;
if(CShmCommon::InitShm(SHM_KEY, sizeof(Account), &shmid) < 0)
{
printf("CShmCommon::InitShm failed\n");
return 0;
}
//map shared memory
Account *ptr = (Account *)CShmCommon::MapShm(shmid);
if(ptr == NULL)
{
printf("CShmCommon::MapShm failed\n");
return 0;
}
//operator shared memory
ptr->code = 10001;
ptr->balance = 50000;
ptr->semid = -1;
//unmap shared memory
CShmCommon::UmapShm((char *)ptr, sizeof(Account));
//destroy shared memory
CShmCommon::DestroyShm(shmid);
return 1;
}