当前位置: 首页 > 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.dtcms.com/a/362353.html

相关文章:

  • 全栈智算系列直播回顾 | 智算中心对网络的需求与应对策略(下)
  • 【LeetCode】3670. 没有公共位的整数最大乘积 (SOSDP)
  • 笔记:人工神经网络
  • Vue基础知识-Vue中:class与:style动态绑定样式
  • DiffusionGPT-LLM驱动的文本生成图像系统
  • OpenStack网络类型解析
  • Markdown 语法全面指南
  • EXPLAIN 和 EXPLAIN ANALYZE
  • 【AI报表】JimuReport 积木报表 v2.1.3 版本发布,免费可视化报表和大屏
  • Python 爬虫案例:爬取豆瓣电影 Top250 数据
  • 【开题答辩全过程】以 基于SSM的高校疫情防控管理系统为例,包含答辩的问题和答案
  • docker中的命令(六)
  • 轻量实现 OCPP 1.6 JSON 协议(欧洲版)的充电桩调试平台
  • AI使用指南:9月开学季,自动生成教学PPT
  • C++ 用于运行时类型识别的typeinfo库使用指南
  • 飞致云开源社区月度动态报告(2025年8月)
  • 苍穹外卖项目实战(日记十三)-记录实战教程及问题的解决方法-(day3-5) 修改菜品功能实现
  • C# FlaUI win 自动化框架,介绍
  • 用只能以关键字指定和只能按位置传入的参数来设计清晰的接口(Effective Python 第25条)
  • 利用 DrissionPage 精准获取淘宝商品描述:Python 爬虫实战指南
  • shell之扩展
  • 奇瑞QQ的后轮制动器设计cad+三维图+设计说明书
  • 【Java】谈谈IdentityHashMap
  • 前阿里专家揭秘:你对中国十大GEO专家的认知,99%都是错的
  • 苹果ipa应用安装包ios系统闪退问题
  • 携程旅行网景区,评论数据爬虫项目数据库保存附源码
  • 需求工程——你真的懂吗
  • C 基础(1) - 初识C语言
  • 在Docker容器中运行Windows:Dockur Windows项目全面解析
  • 机器翻译:python库PyGTranslator的详细使用