当前位置:网站首页>共享内存 - 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对应的文件,重新创建并分配更大内存,才能满足。
边栏推荐
- 蚂蚁三面滑铁卢!遭分布式截胡,靠这些笔记潜修30天,挺进京东
- Alibaba CTO Cheng Li: open source is the source of basic software!
- Vscode builds ESP32-C3 development environment
- 【JS面试题】面试官问我:遍历一个数组用 for 和 forEach 哪个更快?
- mariadbackup物理备份使用——筑梦之路
- 进程间通信 --- system V三种通信方式(图文案例讲解)
- 开放式耳机推荐哪款最好最实用、最好的开放式耳机推荐
- 带你了解一下PHP搭建的电商商城系统
- 程序员是职业病高发群体,别天真的以为只有秃头那么简单,才不是呢。
- Hash table implementation code
猜你喜欢

Children's programming electronics (graphical programming Scratch secondary level exam parsing (choice) in June 2022

The Location object of BOM series

还在开发短信验证码登录?试试(本机号码一键登录)

蚂蚁三面滑铁卢!遭分布式截胡,靠这些笔记潜修30天,挺进京东

web会话管理与xss攻击

分布式事务方案

教育部等五部门联合推荐优质课外资源,腾讯产品青少年模式首发

Linux下 mysql5.7的彻底卸载

深度解析C语言文件操作以及常见问题

力扣541. 反转字符串 II ----双指针解法
随机推荐
Leetcode67. 二进制求和
Create and copy conda environment
2022年了!还在用定时器实现动画?赶紧试试requestAnimationFrame吧!
期货合约知多少
164. 可达性统计
【论文阅读】异常检测的视频通过Self-Supervised和多任务学习
Vscode builds ESP32-C3 development environment
【FreeSwitch开发实践】自定义模块创建与使用
IJCAI 2022 outstanding papers published, China won two draft in 298 the first author
无线传感器网络定位综述
了解 AQS 底层原理
你真的会用Console.log吗?
leetcode链表专题
R错误:缺少值不允许写在下面的作业的数据帧
84.(cesium之家)cesium模型在地形上运动
通过二维顺序表实现杨辉三角
【JS高级】js之闭包对象_04
分布式事务方案
PyQt5快速开发与实战 7.1 信号与槽介绍
frp-免费内网穿透