当前位置:网站首页>共享内存 - shmget填坑记
共享内存 - shmget填坑记
2022-07-29 13:42:00 【偏安一隅,占山为王】
shmget设置的size值,不能大于最大值SHMMAX和小于最小值SHMMIN
且若是key值对应的段已经存在,那么后来使用shmget的size值要小于等于原来的值函
而后询问了一下那位程序猿,他设置的是20kB,个人是100kB,且他的设置为了开机启动,因此每次出错的都是我了,悲催!
/******************************************************************************
*函数名称:yg_init_mem_share
*功能描述: 初始化共享内存(用于存放地图校准数据)
*全局影响:无
*输入:
*输出:无
*返回值:0:成功 -1:发送失败
* 做者 日期 内容
* Jimmy 2018-10-16 建立
*
******************************************************************************/
void yg_init_mem_share(int size)
{
key_t key;
//int size = 1024*1024; //1M内存大小
//1. 建立共享内存
if(-1 == (key = ftok("/", 4)))
{
bv_loge("ftok failed [%d:%s]!", errno, strerror(errno));
bv_error_handle("ftok failed [%d:%s]!", errno, strerror(errno));
return ;
}
bv_logd("key=%#x!", key);
SHM_ID = shmget(key, (size_t)size, IPC_CREAT|0644);
if(-1 == SHM_ID)
{
bv_loge("Init the shared memory[%dKB] failed [%d:%s]!",size/1024, errno, strerror(errno));
bv_error_handle("Init the shared memory[%dKB] failed [%d:%s]!",size/1024, errno, strerror(errno));
}
else
{
bv_logd("Init the shared memory[%dKB] OK!", size/1000);
bv_file_log(g_tcp_fp, "Init the shared memory[%dKB] OK!", size/1000);
}
return ;
}上面是复制别人的,意思就是说,你先创建了一个KEY对应的文件,比如说是K1,现在程序运行时K1对应的内存SIZE是1000字节,后面你想扩大这个内存,直接修改分配的内存的话,最大还是1000字节,只有删掉K1对应的文件,重新创建并分配更大内存,才能满足。
边栏推荐
- 基于降噪自编码器与改进卷积神经网络的采煤机健康状态识别
- MLX90640 红外热成像仪测温传感器模块开发笔记(九)
- 【pytorch】1.6 tensor 基本运算
- 1124. 骑马修栅栏
- 【JS面试题】面试官问我:遍历一个数组用 for 和 forEach 哪个更快?
- Gee engine modification UI interface graphic tutorial
- 力扣541. 反转字符串 II ----双指针解法
- TCP流量控制和拥塞控制
- 线程池拒绝策略详解
- Project Manager: Not bad!The SSO single sign-on code is written, and the sequence diagram is also drawn?
猜你喜欢

从KEIL仿真界面导出数据的技巧

力扣541. 反转字符串 II ----双指针解法

Alibaba CTO Cheng Li: open source is the source of basic software!

C#线程操作UI控件

EA&UML日拱一卒-活动图::StartClassifierBehavior和StartObjectBehavior

中国电信首发全新加密通话产品!有效防止网络监听

BOM系列之Location对象

【论文阅读】Anomaly Detection in Video via Self-Supervised and Multi-Task Learning

Super young!34-year-old professor, vice president of 985 Ace College!

全开放式耳机怎么样?不塞耳朵的蓝牙耳机推荐
随机推荐
多人协作开发出现代码冲突,如何合并代码?
用支持LaTex的Markdown语句编辑一个数学公式
熊市下PLATO如何通过Elephant Swap,获得溢价收益?
1192. 奖金
阿里巴巴 CTO 程立:开源是基础软件的源头!
升级 MDK 5.37 后的问题处理: AC6编译选项, printf, 重启失效等
一文搞懂JS的原型链
zabbix一键部署脚本----亲测可用
简单了解单例模式
九种方式,教你读取 resources 目录下的文件路径
线上支付,出款和收款
何为擦除机制,泛型的上界?
通过二维顺序表实现杨辉三角
Some thoughts on paying for knowledge
【10点公开课】:快手GPU/FPGA/ASIC异构平台的应用探索
Vscode搭建ESP32-C3开发环境
线程池面试汇总
mariadbackup物理备份使用——筑梦之路
推荐几款2022年好用的设备管理系统(软件)
How to merge the code when there is a code conflict in the collaborative development of multiple people?