范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

系统调用mmapSystemV共享内存区

  一,概述
  系统调用mmap通过映射一个普通文件实现共享内存。System V 则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信。也就是说,每个共享内存区域对应特殊文件系统shm中的一个文件。执行过程是先调用shmget,再调用shmat。对于每个共享的内存区,内核维护如下的信息结构,定义在头文件中。 struct shmid_ds {   struct ipc_perm shm_perm;     /* operation perms */   int shm_segsz;            /* size of segment (bytes) */   time_t shm_atime;          /* last attach time */   time_t shm_dtime;          /* last detach time */   time_t shm_ctime;          /* last change time */   unsigned short shm_cpid;      /* pid of creator */   unsigned short shm_lpid;      /* pid of last operator */   short shm_nattch;          /* no. of current attaches */   /* the following are private */   unsigned short shm_npages;      /* size of segment (pages) */   unsigned long *shm_pages;       /* array of ptrs to frames -> SHMMAX */   struct vm_area_struct *attaches;   /* descriptors for attaches */ };二、System V 共享内存区API
  使用共享内存的流程: 1.进程必须首先分配它。  2.随后需要访问这个共享内存块的每一个进程都必须将这个共享内存块绑定到自己的地址空间中。 3.当完成通信之后,所有进程都将脱离共享内存,并且由一个进程释放该共享内存块。 #include  #include  /* 创建一个新的内存共享区或者访问一个已经存在的共享内存区 返回共享内存区标识符 */ int shmget(key_t key, size_t size, int shmflg); /* 创建或打开一个共享内存区后,调用shmat把它连接到调用进程的地址空间 */ void *shmat(int shmid, const void *shmaddr,int shmflg); /* 当一个进程完成某个共享内存区的使用时,调用shmdt断开这个内存区 */ int shmdt(const void *shmaddr); /* 对内存区进行多种操作 cmd取值: IPC_RMID:从系统中删除由shmid标识的共享内存区并拆除它 IPC_SET:给指定的共享内存区设置其shmid_ds结果成员 IPC_STAT:通过buff参数向调用者返回所指定共享内存区当前的shmid_ds结构 */ int shmctl(int shmid, int cmd, struct shmid_ds *buf);
  调用System V API编写程序进行测试:
  程序1:调用shmget函数使用指定的路径名和长度创建一个共享内存区,程序如下: #include  #include  #include  #include  #include   #define SVSHM_MODE (SHM_R | SHM_W | SHM_R>>3 | SHM_R>>6)  int main(int argc,char *argv[]) {     int     c,id,oflag;     char     *ptr;     size_t  length;     oflag = SVSHM_MODE | IPC_CREAT;     while(( c = getopt(argc,argv,"e")) != -1)     {         switch(c)         {             case "e":                 oflag |= O_EXCL;                 break;         }     }     if (optind != argc -2)     {         printf("usage: shmget [-e]  . ");         exit(0);     }     length = atoi(argv[optind + 1]);     //创建由用户指定其名字和大小的共享内存区     id = shmget(ftok(argv[optind],0),length,oflag);     //把该内存区连接到当前进程的地址空间     ptr = shmat(id,NULL,0);     exit(0); }
  程序2:调用shmctl指定IPC_RMID命令,从系统中删除一个共享内存区,程序如下: #include  #include  #include  #include   #define SVSHM_MODE (SHM_R | SHM_W | SHM_R>>3 | SHM_R>>6)  int main(int argc,char* argv[]) {     int     id;     if(argc != 2)     {         printf("usage: shmrmid  ");         exit(0);     }     //打开共享内存区     id = shmget(ftok(argv[1],0),0,SVSHM_MODE);     //从系统中删除由id标识的共享内存区     shmctl(id,IPC_RMID,NULL);     exit(0); }
  程序3:往共享内存区中写入一个模式,调用shmctl指定IPC_STAT命令格式,程序如下: #include  #include  #include  #include  #include   #define SVSHM_MODE (SHM_R | SHM_W | SHM_R>>3 | SHM_R>>6)  int main(int argc,char *argv[]) {     int     i,id;     struct shmid_ds buff;     unsigned char *ptr;     if(argc != 2)     {         printf("usage: shmwrite  . ");         exit(0);     }     id = shmget(ftok(argv[1],0),0,SVSHM_MODE);     ptr = shmat(id,NULL,0);     shmctl(id,IPC_STAT,&buff); //获取共享内存区大小     for(i=0;i #include  #include  #include  #include   #define SVSHM_MODE (SHM_R | SHM_W | SHM_R>>3 | SHM_R>>6)  int main(int argc,char *argv[]) {     int     i,id;     struct shmid_ds buff;     unsigned char c,*ptr;     if(argc != 2)     {         printf("usage: shmread . ");         exit(0);     }     id = shmget(ftok(argv[1],0),0,SVSHM_MODE);     ptr = shmat(id,NULL,0);     shmctl(id,IPC_STAT,&buff);     for(i=0;i
车圈铁娘子来坐镇,小鹏汽车或重现哈弗H6奇迹,特斯拉蔚来会紧张吗?本文来源时代周报作者王贺春节刚过,小鹏汽车又开启了公司组织架构及人员的调整。此次,小鹏迎来了素有车圈铁娘子之称的王凤英。2023年1月30日,小鹏汽车宣布,原长城汽车总经理王凤英正为世界经济企稳复苏提供强大动能(权威论坛)来源人民日报为世界经济企稳复苏提供强大动能(权威论坛)中外专家看好中国经济发展在位于云南省景洪市的中老铁路野象谷站货场,工人吊装集装箱。李云生摄(影像中国)数据来源外交部国家发展和300亿换来的,值不值呢?邯钢老区搬迁自2022年10月份邯钢东区烧结高炉停产开始。这次邯钢东区共停产烧结机两台,各式焦炉3座,高炉3座(1座3200立,2座2000立),日影响产铁量1。8万吨轧材产线先后新加坡房地产保持上涨势头为抑制房地产市场过热,新加坡政府于2022年9月29日推出最新一轮房地产降温措施,目前已初见成效,私宅售价涨幅开始趋缓。市场普遍预测,2023年,新加坡房地产市场将继续保持上涨势头国内油价调价窗口3日开启或迎兔年第一涨中新网2月3日电(中新财经葛成)春节假期归来,油价又要涨了?2月3日24时,国内新一轮成品油调价窗口将开启。本轮是2023年第三次调价,受国际油价变化影响,机构预计,本轮国内成品油学习投资理财是越理越亏呢?还是你不理财财不理你呢?最近我在看些投资理财的书,但是每当我跟我朋友分享投资理财知识的时候,我朋友总是一副看我被洗脑的表情,每次我说的情到深处的时候,他总是来一句你被洗脑了。我先说下我为什么学习投资理财,房地产还能活多久?房地产不是个暴力行业,但是大家都认为它是一个稳赚不赔的行业,多做多赚的行业,所以大家都在高歌猛进疯狂扩张,加之预售制及资金监管制度使得各大房企更是把高周转玩出了花样。最大的危机就是常驻外商突破1万人!义乌国际商贸城开市,外商奋战开门红视频加载中(央视财经第一时间)位于浙江的义乌国际商贸城被誉为全球最大的小商品批发市场,今天(2月2日),义乌国际商贸城节后开市,大批外商也已经回归。面对新年新商机,外国客商正忙些什鼓励富豪再创业,有利社会进一步发展为了推动社会经济的发展,政府多次呼吁全民创业,推动社会经济繁荣与进步。在人民大众中,能量最大的肯定是广大富豪,不仅是他们聚集了大量资源,还有就是他们拥有的丰富经验以及高智商头脑,在瀍河区基金招商与创新发展论坛项目集中签约暨中航证券洛阳营业部揭牌仪式圆满举行大河报豫视频记者焦勐通讯员黄晨辉文图1月31日上午,洛阳市瀍河区在洛阳颐高数字科创中心二楼会议室隆重举行基金招商与创新发展论坛项目集中签约暨中航证券洛阳营业部揭牌仪式,标志着瀍河区基金公司牛不牛,可以参考获奖总数图1基金公司现任经理获奖总数(多人同获奖项时累加,按获奖人数总数排序)晨星奖金牛奖金基金明星奖英华奖是业内含金量较高的奖项,一个公司的获奖人数和获奖总数,能在一定程度上反映了该公司
太空种子即将返回地球,用于生物学和遗传学研究,以加强粮食安全美国国家航空航天局原子能机构和粮农组织实验室的种子于2022年11月被送上太空。联合国粮食及农业组织和国际原子能机构今天在维也纳联合举行活动,纪念去年11月送入太空的种子即将返回地爬取数据违法吗?互联网时代充斥着海量数据。这些数据看似不起眼,但在算法加持下,成为商家竞相争夺的资源。数据是可以爬取的,但是爬取行为并不都是正当行为。如果爬取的内容达到实质替代数据来源网站的程度,全球连线中国中东欧(沧州)中小企业合作区深化中国与中东欧国家经贸合作视频加载中项目建设贸易洽谈赶制订单日前,中国中东欧(沧州)中小企业合作区一派繁忙景象,在合作区中欧绿色产业园公用型保税仓库,工作人员忙着清点货物,优化存放布局。目前,合作区已经形成信托公司有了新分类近日,银保监会发布关于规范信托公司信托业务分类的通知(以下简称通知),业内专家认为,此次通知发布有助于厘清各类信托业务边界和服务内涵,引导信托公司以规范方式发挥信托制度优势,丰富信学成龙李连杰,甄子丹加盟,疾速追杀4为何能在全球大卖?好内容我来评疾速追杀系列应该是近十年最好的动作片,又名以狗之名。第一部是还我狗命,第二部是要你狗命,第三部是饶我狗命,第四部是狗命自由。疾速追杀1是整个系列的开始,由于两位导演都是中车株洲所发布七大黑科技!涵盖海陆空等多应用场景来源湖南日报三湘都市报新湖南客户端3月28日讯(全媒体记者杨洁规通讯员姜杨敏)海风1号大型复合材料风电叶片无人值守风电场解决方案重载机车自动驾驶电气化公路系统中车储能系统3月28日上市公司扎堆跨界布局新能源领域上市公司跨界布局新能源产业热情不减。3月27日晚,鞍重股份公告称,为更好地满足战略转型需要,聚焦并加快推进公司在新能源领域的发展步伐,拟转让原有工程机械制造业务等相关资产。中国证券黎川县聚焦三度持续提升纳税人缴费人满意度黎川县税务局秉承办好惠民事。服务现代化的服务主题,积极落实省局便民办税春风行动第一批17条措施,参照文件要求认真找差距找问题找风险,聚焦三度着力提升纳税人缴费人满意度,持续优化营商TOOM带你读懂舆情监测系统揭秘如何帮助企业洞察市场需求随着互联网的普及和数字化时代的到来,舆情监测系统越来越成为企业洞察市场需求的重要工具。本文将从什么是舆情监测系统它的作用如何帮助企业洞察市场需求以及一个案例分析等方面进行深入探讨。重启内衣秀,维密翻身不能只靠吃老本时隔四年,那群挥着翅膀的女孩将再次登上秀场。从母公司LBrandsInc。分拆后,维多利亚的秘密(以下简称维密)并未彻底摆脱困局。2022年财报显示,在截至1月28日的12个月内,主图指标公式一图识别庄家吸货背后的玄机庄家吸货指标一图教你识别庄家吸货控盘减仓背后的玄机今天给大家分享一个判断庄家吸筹手法的指标庄家吸货一般而言,庄家吸货完成后就是一个拉升期,把握住庄家吸货,今天给大家分享,如何通过技