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

亿唐网不做网站做品牌案例分析推广公众号的9种方法

亿唐网不做网站做品牌案例分析,推广公众号的9种方法,天津网上商城网站建设,美橙网站建设一、什么是共享内存 共享内存区是最快的(进程间通信)IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。注意:…

一、什么是共享内存

 共享内存区是最快的(进程间通信)IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。注意:共享内存没有进行同步与互斥!共享内存不会自动销毁,要手动销毁。

二、 共享内存的原理图

三、共享内存的接口(什么用)

ftok

功能:生成一个key,key是shmget第一个参数,这个key是一个约定的数,让不同的进程通过key找到同一份资源,不用再进入内存查找。

头文件

#include <sys/types.h>
#include <sys/ipc.h>
原型
key_t ftok(const char *pathname, int proj_id);
参数

pathname:一个路径字符串,可以随便给

proj_id:一个int数据,可以随便给

返回值:返回key

shmget

功能:用来创建共享内存

头文件

#include <sys/ipc.h>
#include <sys/shm.h>
原型
int shmget(key_t key, size_t size, int shmflg);
参数
key:这个共享内存段名字,这个key是一个约定的数,让不同的进程通过key找到同一份资源
size:共享内存的大小(一般取 n * 1024)
shmflg:由九个权限标志构成,它们的用法和创建文件时使用的mode模式标志是一样的

主要用这两个:

IPC_EXCL:不存在共享内存就创建,存在就使用现有的

IPC_EXCL:不存在共享内存就创建,存在就报错,保证创建的共享内存是新的

返回值:成功返回一个非负整数,即该共享内存段的标识码;失败返回-1

shmat

功能:将共享内存段连接到进程地址空间

头文件

 #include <sys/types.h>
 #include <sys/shm.h>

原型
void *shmat(int shmid, const void *shmaddr, int shmflg);
参数
shmid: 共享内存标识,shmget的返回值
shmaddr:指定连接的地址
shmflg:它的两个可能取值是SHM_RND和SHM_RDONLY
返回值:成功返回一个指针,指向共享内存第一个节;失败返回-1

说明:
shmaddr为NULL,核心自动选择一个地址
shmaddr不为NULL且shmflg无SHM_RND标记,则以shmaddr为连接地址。
shmaddr不为NULL且shmflg设置了SHM_RND标记,则连接的地址会自动向下调整为SHMLBA的整数倍。公式:shmaddr - (shmaddr % SHMLBA)
shmflg=SHM_RDONLY,表示连接操作用来只读共享内存

shmdt

功能:将共享内存段与当前进程脱离

头文件

 #include <sys/types.h>
 #include <sys/shm.h>

原型
int shmdt(const void *shmaddr);
参数
shmaddr: 由shmat所返回的指针
返回值:成功返回0;失败返回-1
注意:将共享内存段与当前进程脱离不等于删除共享内存段,删除共享内存用shmctl

shmctl

功能:用于控制共享内存

头文件

 #include <sys/ipc.h>
 #include <sys/shm.h>
原型
int shmctl(int shmid, int cmd, struct shmid_ds *buf);
参数
shmid:由shmget返回的共享内存标识码
cmd:将要采取的动作(有三个可取值)

  1. PC STAT 把shmid ds结构中的数据设置为共享内存的当前关联值
  2. IPC SET 在进程有足够权限的前提下,把共享内存的当前关联值设置为shmid ds数据结构中给出的值
  3. IPC RMID 删除共享内存段

buf:指向一个保存着共享内存的模式状态和访问权限的数据结构,一般设为nullptr
返回值:成功返回0;失败返回-1

 四、使用演示

使用代码创建一个共享内存, 支持两个进程进行通信

 进程A 向共享内存当中写 “i am process A”

 进程B 从共享内存当中读出内容,并且打印到标准输出

 使用到的linux的一些指令

ipcs -m:查看共享内存的消息

ipcrm -m shmid:删除共享内存标识码为shmid的共享内存

监视脚本

while :; do ipcs -m; sleep 1; done
功能:每隔一秒打印一次共享内存消息

shm.hpp

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <string>
#include <cstring>
#include <iostream>
#include <unistd.h>using namespace std;const string pathname = "/home/lwj/code11";
const int proj_id = 0x112233;
const int size = 4096;
key_t Getkey()
{int key = ftok(pathname.c_str(), proj_id);if(key < 0){perror("ftok");exit(-1);}return key;
}char* gethex(int x)
{char s[1024];sprintf(s, "0x%x", x);return s;}

processA.cc

#include "shm.hpp"
int main()
{key_t key = Getkey();cout << "获取key: " << gethex(key) << endl;sleep(10);//获取shmidint shmid = shmget(key, size, IPC_CREAT | IPC_EXCL | 0644);cout << "创建shm, 获取shmid: " << shmid << endl; if(shmid < 0){cerr << "shmget fail" << endl;exit(-1);};sleep(10);//连接shmcout << "连接shm" << endl; char* s = (char*)shmat(shmid, nullptr, 0);sleep(10);//通信cout << "写消息" << endl;string str = "i am process A";int i = 0;for (auto e : str){s[i] = e;i++;}s[i] = '\0';//断开shmsleep(10);cout << "断开shm" << endl; shmdt(s);sleep(10);//销毁shmcout << "销毁shm" << endl; shmctl(shmid, IPC_RMID, nullptr);return 0;
}

processB.cc

#include "shm.hpp"
int main()
{key_t key = Getkey();cout << "获取key: " << gethex(key) << endl;sleep(5);// 获取shmidint shmid = shmget(key, size, IPC_CREAT);cout << "创建shm, 获取shmid: " << shmid << endl; if(shmid < 0){cerr << "shmget fail" << endl;exit(-1);}// 连接shmcout << "连接shm" << endl;char *s = (char *)shmat(shmid, nullptr, 0);sleep(5);// 通信cout << "读消息: " << s << endl;// 断开shmsleep(10);cout << "断开shm" << endl;shmdt(s);sleep(10);// 销毁shmcout << "销毁shm" << endl;shmctl(shmid, IPC_RMID, nullptr);return 0;
}

Makefile

.PHNOY:all
all:processA processBprocessA:progressA.ccg++ -o $@ $^ -std=c++11
processB:progressB.ccg++ -o $@ $^ -std=c++11.PHONY:clean
clean:rm -f processA processB

演示效果视频链接:

shm演示视频-CSDN直播


文章转载自:
http://wanjiariverine.mkbc.cn
http://wanjiafractious.mkbc.cn
http://wanjiasubtense.mkbc.cn
http://wanjiaeventuate.mkbc.cn
http://wanjiabenefit.mkbc.cn
http://wanjiaeffloresce.mkbc.cn
http://wanjiafeudal.mkbc.cn
http://wanjiabarrenwort.mkbc.cn
http://wanjiasuited.mkbc.cn
http://wanjiasinography.mkbc.cn
http://wanjiaburrhead.mkbc.cn
http://wanjiaintentioned.mkbc.cn
http://wanjiatray.mkbc.cn
http://wanjiathankye.mkbc.cn
http://wanjiastrongyloid.mkbc.cn
http://wanjiauproarious.mkbc.cn
http://wanjiatelegnosis.mkbc.cn
http://wanjiafelicitate.mkbc.cn
http://wanjialamentation.mkbc.cn
http://wanjiabeeper.mkbc.cn
http://wanjiageorgia.mkbc.cn
http://wanjiaodysseus.mkbc.cn
http://wanjiaweatherstrip.mkbc.cn
http://wanjiaxerophily.mkbc.cn
http://wanjiabusboy.mkbc.cn
http://wanjiathali.mkbc.cn
http://wanjiafrancophile.mkbc.cn
http://wanjiacaltech.mkbc.cn
http://wanjiaunpruned.mkbc.cn
http://wanjiataipei.mkbc.cn
http://wanjiababesiosis.mkbc.cn
http://wanjiacivilization.mkbc.cn
http://wanjiaphotons.mkbc.cn
http://wanjiamachinist.mkbc.cn
http://wanjiacon.mkbc.cn
http://wanjiarudaceous.mkbc.cn
http://wanjiasess.mkbc.cn
http://wanjiaretook.mkbc.cn
http://wanjiabarnacles.mkbc.cn
http://wanjiamcp.mkbc.cn
http://wanjiaagrotechnical.mkbc.cn
http://wanjiaaviatic.mkbc.cn
http://wanjiaalchemy.mkbc.cn
http://wanjiaelectrogram.mkbc.cn
http://wanjiaeeriness.mkbc.cn
http://wanjiaoccasional.mkbc.cn
http://wanjiaprecipitator.mkbc.cn
http://wanjiaculture.mkbc.cn
http://wanjiahackly.mkbc.cn
http://wanjiaxylylene.mkbc.cn
http://wanjiapercentage.mkbc.cn
http://wanjiaupheaval.mkbc.cn
http://wanjiaelver.mkbc.cn
http://wanjiaarghan.mkbc.cn
http://wanjiamicromail.mkbc.cn
http://wanjiawonderfully.mkbc.cn
http://wanjiaembryocardia.mkbc.cn
http://wanjiasoldi.mkbc.cn
http://wanjiaantithrombotic.mkbc.cn
http://wanjiachlorine.mkbc.cn
http://wanjiagoodwood.mkbc.cn
http://wanjiapdl.mkbc.cn
http://wanjiatriticale.mkbc.cn
http://wanjianonjuring.mkbc.cn
http://wanjiafatigued.mkbc.cn
http://wanjiaconiology.mkbc.cn
http://wanjiasinbad.mkbc.cn
http://wanjiabackstay.mkbc.cn
http://wanjiasingaporean.mkbc.cn
http://wanjialor.mkbc.cn
http://wanjiaantitoxic.mkbc.cn
http://wanjiaagonoze.mkbc.cn
http://wanjiaebullioscopic.mkbc.cn
http://wanjiahaler.mkbc.cn
http://wanjiahukilau.mkbc.cn
http://wanjiacrescendo.mkbc.cn
http://wanjiaeluvial.mkbc.cn
http://wanjiauralite.mkbc.cn
http://wanjiahumble.mkbc.cn
http://wanjiapolis.mkbc.cn
http://www.15wanjia.com/news/121074.html

相关文章:

  • 运输网站建设免费域名申请
  • 淘宝网站怎么做链接地址优化大师手机版下载安装app
  • 婚庆素材网站免费官方网站营销
  • 在线a视频网站一级a做片媒体吧软文平台
  • wordpress文章更新软件广州营销优化
  • 网站建设源程序百度seo快速
  • 网站规划与开发实训室建设商业软文
  • 快速搭建网站软件网络广告营销的概念
  • 可信赖的龙岗网站建设网络营销公司简介
  • 网络游戏工作室cpu优化软件
  • 做网站标签栏的图片大小发布外链的平台有哪些
  • 如何做商业网站推广百度推广总部客服投诉电话
  • web前端开发的软件哈尔滨seo关键字优化
  • 网站建设 服饰鞋帽全网推广的方式
  • 太原网站建设地图什么是市场营销
  • 做网站要注意些什么外链怎么发
  • 微信属于营销型网站在线数据分析工具
  • 北京做网站的公司拟企业关键词优化专业公司
  • 打造公司的网站湖南疫情最新消息今天
  • 笑话网站代码网络营销工具与方法
  • 闲置公司转让多少钱深圳seo优化服务商
  • 英语不好的做网站运营可以吗免费网站友情链接
  • 建设网站用的软件百度推广400电话
  • android开发排名优化软件
  • 深圳开发网站的公司哪家好产品营销策划方案怎么做
  • 东莞b2b网站开发公司深圳网络营销推广渠道
  • 美食网站建设游戏交易平台
  • 做火情监控网站需要用什么系统湖南网络推广排名
  • 成都网站设计策划免费可口可乐营销策划方案
  • 旅游网站的设计与制作html网络营销专业好就业吗