当前位置: 首页 > news >正文

20250901的学习笔记

一、system v

        --- 共享内存信号量集

1、IPC对象操作通用框架

key值 ==> 申请 ==》读写==》关闭 ==》卸载

2、创建方式

(1)IPC_PRIVATE固定的私有键值,其值等于 0x0。一般用于有亲缘关系的进程间使用。

(2)ftok()创建临时键值。

#include <sys/types.h>

#include <sys/ipc.h>

"/etc"!

key_t ftok(const char *pathname, int proj_id);

功能:

        通过该函数可以将pathname指定的路径用来以projid生成唯一的临时键值。

参数:

        pathname        路径+名称

        proj_id        整形的数字,一般用ASCIl码的单字符。表示与参数1的运算。

返回值:

        成功        返回唯一键值

        失败        -1

二、共享内存

        --- 效率最高的进程间通信方式

操作流程:

key ==》申请对象==》映射对象==》读写对象==》撤销映射"==》删除对象

1、申请对象:shmget

#include <sys/ipc.h>

#include <sys/shm.h>

ps auxlgrep a.out

share memory getIPC_CREAT|0666

int shmget(key_t key, size_t size, int shmflg);

功能:

        使用唯一键值key向内核提出共享内存使用申请

参数:

        key        唯一键值

        size        要申请的共享内存大小

        shmflg        申请的共享内存访问权限,八进制表示

注:如果是第一个申请,则用IPC_CREAT;如果要检测是否存在,用IPC_EXCL。

返回值:

        成功        返回共享内存id,一般用shmid表示

        失败        -1

2、映射对象:shmat

void *shmat(int shmid, const void *shmaddr, int shmflg);

功能:

        将指定shmid对应的共享内存映射到本地内存。

参数:

        shmid        要映射的本地内存

        shmaddr        本地可用的地址,如果不确定则用NULL,表示由系统自动分配。

        shmflg          0,表示读写;SHM_RDONLY,只读。

返回值:

        成功        返回映射的地址,一般等于shmaddr

        失败        (void*)-1

3、撤销映射:shmdt

int shmdt(const void *shmaddr);

功能:

        将本地内存与共享内存断开映射关系。

参数:

        shmaddr        要断开的映射地址。

返回值:

        成功        0

        失败        -1

4、删除对象:shmctl

int shmctl(int shmid, int cmd, struct shmid_ds *buf);

功能:

        修改共享内存属性,也可以删除指定的共享内存对象。

参数:

        shmid        要删除的共享内存对象

        cmd IPC_RMID         删除对象的宏

        buff NULL         表示只删除对象。

返回值:

        成功        0

        失败        -1

http://www.xdnf.cn/news/1426393.html

相关文章:

  • Map + 函数式接口的策略模式
  • Java面试宝典:Redis高并发高可用(集群)
  • 【序列晋升】23 Spring Cloud Kubernetes 云原生架构的终极整合方案
  • Vue基础知识-Vue中:class与:style动态绑定样式
  • 【计算岗位解析:从代码到产品,这些角色如何“造”出数字世界?】
  • 威科夫与高频因子
  • (Redis)Redis 分布式锁及改进策略详解
  • Spring 控制器参数注解
  • VBA开发者的福音:让代码效率暴涨300%的终极数据结构选择指南
  • 基于单片机智能空调/温度控制系统
  • 力扣404 代码随想录Day15 第三题
  • GitHub每日最火火火项目(9.1)
  • Java类和对象(下)
  • 二维元胞自动机:从生命游戏到自复制系统的计算宇宙
  • pprint:美观打印数据结构
  • 基于单片机十六路抢答器系统Proteus仿真(含全部资料)
  • Qt::Q_INIT_RESOURCE用法
  • 前端性能优化实战:如何高效管理和加载图片、字体、脚本资源
  • 在 Qt 中:QString 好,还是 std::string 好?
  • 零售行业的 AI 革命:从用户画像到智能供应链,如何让 “精准营销” 不再是口号?
  • 响应式编程框架Reactor【9】
  • 2.充分条件与必要条件
  • 基本问题解决--舵机
  • 手把手教你搭建 UDP 多人聊天室(附完整源码)
  • 10.《基础知识探秘:DHCP地址分配员》
  • 打工人日报#20250901
  • nCode 后处理常见问题汇总
  • C++精选面试题集合(100份大厂面经提取的200+道真题)
  • 实现自己的AI视频监控系统-第三章-信息的推送与共享2
  • 【自记录】Ubuntu20.04下Python自编译