程序员书籍笔记 程序员书籍笔记
  • HTML
  • CSS
  • JavaScript
  • 前端知识
  • Vue
  • MarkDown
  • git
  • Node.js
  • Linux
  • 51单片机
  • 四级
  • 第一学期课程
  • 操作系统
  • 计算机网络
  • 数据结构
  • 计算机组成原理
  • HTML5
  • Electron
  • 日记便签
  • 前端导航
GitHub (opens new window)
  • HTML
  • CSS
  • JavaScript
  • 前端知识
  • Vue
  • MarkDown
  • git
  • Node.js
  • Linux
  • 51单片机
  • 四级
  • 第一学期课程
  • 操作系统
  • 计算机网络
  • 数据结构
  • 计算机组成原理
  • HTML5
  • Electron
  • 日记便签
  • 前端导航
GitHub (opens new window)
  • 操作系统

    • 生产消费者
      • Linux
      • shmget()
      • shmat()
      • shmdt()
  • AgLearn

  • 计算机网络

  • 数据结构

  • 计算机组成原理

  • 基础
  • 操作系统
yuadh
2022-05-26
目录

生产消费者

# Linux

# shmget()

用于创建共享内存

int shmget(key_t key,size_t size,int shmflg)
1
  • key_t key 第一个参数用于共享内存命名,不同进程通过 key 进行共享内存识别。函数不止用于创建共享内存,这里返回的描述符有可能是已经创建好的命名为 key 共享内存的描述符
  • size_t size 指定需要的共享内存空间大小
  • int shmflg 限权标志 , 如果想要在 key 表示的共享内存不存在时创建的话可以使用 IPC_CREAT 进行指示,如果还要指定改共享内存的权限的话(和liunx下文件权限意义相同),可以与权限做或运算。如果创建新的共享内存且指定共享内存的权限为 0644 (表示该进程的共享内存对于该用户创建的其他内存而言具有rw限权,同用户组以及其他用户权限只有r限权),则可以指定 为 IPC_CREAT | 0644
  • 返回成功为 key 相关的共享空间描述符
  • 失败 -1

# shmat()

第一次创建完共享内存时,它还不能被任何进程访问,shmat 函数作用就是用来启动对共享内存的访问,并把共享内存连接到当前的地址空间

void *shmat(int shm_id,const void *shm_addr,int shmfg)
1

调用成功返回共享内存首地址,调用失败返回-1

  • shm_id
  • shm_addr
  • shmfg

# shmdt()

该函数用于将内存从当前进程中分离

需要注意,将共享内存分离并不是删除它,只是使该共享内存对当前进程不再可用

int shmdt(const void* shamddr)
1
编辑 (opens new window)
上次更新: 2023/02/07, 14:51:48
题目01-04

题目01-04→

Theme by Vdoing | Copyright © 2021-2023 yuadh
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×