创建共享内存

int shmget( key_t key, size_t size, int flag );
//such as:key_t key = ftok(".",1);shmId = shmget(key,1024*4,IPC_CREAT|0666);if(shmId == -1){perror("shmget:");return -1;}

第一个参数 key
系统建立IPC通讯 (消息队列、信号量和共享内存) 时必须指定一个ID值。通常情况下,该id值通过ftok函数得到。

key_t ftok( const char * fname, int id )
fname就是你指定的文件名(已经存在的文件名),一般使用当前目录,如:
key_t key;
key = ftok(".", 1); 这样就是将fname设为当前目录。
id是子序号。虽然是int类型,但是只使用8bits(1-255)。

第二个参数 size
内核是以页为单位分配内存,当size参数的值不是系统内存页长的整数倍时,系统会分配给进程最小的可以满足size长的页数,但是最后一页的剩余部分内存是不可用的。

简单来说,就是1024的倍数
注意:只获取共享内存时指定为0

第三个参数 flag

IPC_CREAT:如果内核中不存在键值与key相等的共享内存,则新建一个共享内存;如果存在这样的共享内存,返回此共享内存的标识符

IPC_CREAT|IPC_EXCL:如果内核中不存在键值 与key相等的共享内存,则新建一个共享内存;如果存在这样的共享内存则报错

0:返回共享内存的标识符

注意:上述shmflg参数为模式标志参数,使用时需要与IPC对象存取权限(如0600)进行|运算来确定信号量集的存取权限

共享内存 shmget函数相关推荐

  1. 共享内存 shmget函数

    内核共享内存 shmget 头文件 函数 #include <sys/ipc.h> #include <sys/shm.h>// 得到一个共享内存标识符或创建一个共享内存对象并 ...

  2. Linux进程间通信源码剖析,共享内存(shmget函数详解)

    转至:http://blog.csdn.net/lanmanck/article/details/6092995 shmget int shmget(key_t key, size_t size, i ...

  3. 共享内存(shmget函数详解)

    shmget int shmget(key_t  key, size_t  size, int  flag); key: 标识符的规则 size:共享存储段的字节数 flag:读写的权限 返回值:成功 ...

  4. 共享内存---shmget shmat shmdt

    From: http://fengxue103.blog.hexun.com/32303320_d.html 要使用共享内存,应该有如下步骤: 1.开辟一块共享内存 shmget() 2.允许本进程使 ...

  5. c语言中shmget相关函数,unix中共享内存(shmget的实现,非mmap)

    共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区.在/proc/sys/kernel/目录下,记录着共享内存的一些限制,如一 个共享内存区的最大字节数shmmax,系统范围内最大共享内存 ...

  6. 共享内存 - shmget填坑记

    shmget设置的size值,不能大于最大值SHMMAX和小于最小值SHMMIN 且若是key值对应的段已经存在,那么后来使用shmget的size值要小于等于原来的值函 而后询问了一下那位程序猿,他 ...

  7. 共享内存shmget的郁闷

    今天上午试验共享内存 shmget,但是总是不能成功申请到内存. 一开始还以为是第一个参数key有问题,调试了半天,发现key是正确的,没有报错,也可以根据不同路径变化. key_t ftok(con ...

  8. 共享内存(shmget,shmat,shmdt,shmctl)

    共享内存shmgetshmatshmdtshmctl shmget int shmget(key_t key, size_t size, int flag); key: 标识符的规则 size:共享存 ...

  9. linux 共享内存 shmget

    专栏内容:linux下并发编程 个人主页:我的主页 座右铭:天行健,君子以自强不息:地势坤,君子以厚德载物. 目录 前言 概述 原理机制 系统命令 接口说明 代码演示 结尾 前言 本专栏主要分享lin ...

最新文章

  1. 清晰易懂的Numpy进阶教程
  2. lr:lr中错误解决方法19种
  3. saltstack/salt的state.sls的使用
  4. POJ 3150 循环矩阵的应用
  5. 什么是爱?什么是幸福?
  6. Python Django 正向查询与逆向查询
  7. Java线程的6种状态
  8. 著名的用户界面设计准则
  9. unexpected error ConnectionError object has no attribute
  10. 华成英-模拟电子技术P11 场效应管及其放大电路 笔记
  11. python遗传算法工具箱的使用_Deap: python中的遗传算法工具箱
  12. 编程语言与他背后的故事
  13. 需要一个红警2的易语言源码
  14. Windows错误系统配置提权之系统服务权限配置错误 (二)
  15. 抢不到回家的票,还真不是12306技术不行
  16. 面试5173的奇葩经历——老板与员工的博弈论
  17. 吴思《潜规则》:读圣贤书所为何事?
  18. 【华为OD机试】求众数和中位数
  19. 李宏毅机器学习 Classification
  20. electron 主进程,和渲染进程的通信

热门文章

  1. 计算机服务项里没有MySQL服务
  2. [译]游戏编程入门(by David Astle)(转载)
  3. 云电商的痛点如何解决—超级云APP
  4. PES2008 [实况11] 即将出炉
  5. linux charg修改目录,Thinkpad在linux(ubuntu)下修改电池充电阈值,成功解决Thinkpad在Linux...
  6. 阿里iconfont字库的使用
  7. 64位无符号整形格式化符号
  8. 【开店宝典】Lazada怎么入驻?
  9. oracle有没有boolean类型,oracle有Boolean类型
  10. 【诗歌系列】《神曲》