当前位置:网站首页>共享内存 - 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对应的文件,重新创建并分配更大内存,才能满足。
边栏推荐
猜你喜欢

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

【JS高级】js之闭包对象_04

2022年了!还在用定时器实现动画?赶紧试试requestAnimationFrame吧!

Understand the yolov7 network structure

关于知识付费的一些思考

EA&UML日拱一卒-活动图::Feature和StuctualFeature

线程池拒绝策略详解

Project Manager: Not bad!The SSO single sign-on code is written, and the sequence diagram is also drawn?

The key to cracking AI full-process development problems

升级 MDK 5.37 后的问题处理: AC6编译选项, printf, 重启失效等
随机推荐
验证二叉树的前序序列化[抽象前序遍历]
进程间通信 --- system V三种通信方式(图文案例讲解)
C#实现线程管理类
MySQL8.0学习记录21 - 视图
程序员入门的第一个程序,打印输出 “ HelloWorld “
分布式事务方案
开关电源-PWM外设简介及MCC配置
Some thoughts on paying for knowledge
Alibaba CTO Cheng Li: open source is the source of basic software!
关闭线程池 shutdown 和 shutdownNow 的区别
1184. 欧拉回路
你真的会用Console.log吗?
城市污水处理过程模型预测控制研究综述
【FreeSwitch开发实践】自定义模块创建与使用
全开放式耳机怎么样?不塞耳朵的蓝牙耳机推荐
基于降噪自编码器与改进卷积神经网络的采煤机健康状态识别
教育部等五部门联合推荐优质课外资源,腾讯产品青少年模式首发
通过二维顺序表实现杨辉三角
PHP代码审计得这样由浅入深地学
Gdb debugging common concepts finishing